From 8a5375b5ca90407e4860e9126d4be0465d62e599 Mon Sep 17 00:00:00 2001 From: sadrakhamoshi Date: Tue, 23 Mar 2021 22:08:30 +0430 Subject: [PATCH 01/27] basic installation --- ch_nilva/ch_nilva/__init__.py | 0 ch_nilva/ch_nilva/asgi.py | 16 ++++ ch_nilva/ch_nilva/settings.py | 134 ++++++++++++++++++++++++++++++++++ ch_nilva/ch_nilva/urls.py | 25 +++++++ ch_nilva/ch_nilva/wsgi.py | 16 ++++ ch_nilva/manage.py | 22 ++++++ ch_nilva/requirements.txt | 25 +++++++ 7 files changed, 238 insertions(+) create mode 100644 ch_nilva/ch_nilva/__init__.py create mode 100644 ch_nilva/ch_nilva/asgi.py create mode 100644 ch_nilva/ch_nilva/settings.py create mode 100644 ch_nilva/ch_nilva/urls.py create mode 100644 ch_nilva/ch_nilva/wsgi.py create mode 100644 ch_nilva/manage.py create mode 100644 ch_nilva/requirements.txt diff --git a/ch_nilva/ch_nilva/__init__.py b/ch_nilva/ch_nilva/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ch_nilva/ch_nilva/asgi.py b/ch_nilva/ch_nilva/asgi.py new file mode 100644 index 00000000..66f16024 --- /dev/null +++ b/ch_nilva/ch_nilva/asgi.py @@ -0,0 +1,16 @@ +""" +ASGI config for ch_nilva project. + +It exposes the ASGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/3.1/howto/deployment/asgi/ +""" + +import os + +from django.core.asgi import get_asgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'ch_nilva.settings') + +application = get_asgi_application() diff --git a/ch_nilva/ch_nilva/settings.py b/ch_nilva/ch_nilva/settings.py new file mode 100644 index 00000000..a35123bd --- /dev/null +++ b/ch_nilva/ch_nilva/settings.py @@ -0,0 +1,134 @@ +""" +Django settings for ch_nilva project. + +Generated by 'django-admin startproject' using Django 3.1.7. + +For more information on this file, see +https://docs.djangoproject.com/en/3.1/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/3.1/ref/settings/ +""" + +from pathlib import Path + +# Build paths inside the project like this: BASE_DIR / 'subdir'. +BASE_DIR = Path(__file__).resolve().parent.parent + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/3.1/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = '-d-o#ld*#w93d2io90!&nsj(xter2y43qlc8#!)22h80cb%*7g' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +ALLOWED_HOSTS = ['*'] + +# Application definition + +INSTALLED_APPS = [ + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + 'rest_framework', + 'rest_framework.authtoken', + 'corsheaders', + 'drf_yasg', +] + +MIDDLEWARE = [ + 'django.middleware.security.SecurityMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', +] + +ROOT_URLCONF = 'ch_nilva.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [], + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.debug', + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + ], + }, + }, +] + +WSGI_APPLICATION = 'ch_nilva.wsgi.application' + +# Database +# https://docs.djangoproject.com/en/3.1/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.postgresql', + 'NAME': 'nilvaDB', + 'USER': 'nilva', + 'PASSWORD': 'nilva', + 'HOST': 'localhost', + } +} + +REST_FRAMEWORK = { + 'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema', + + 'DEFAULT_AUTHENTICATION_CLASSES': ( + 'rest_framework.authentication.BasicAuthentication', + 'rest_framework.authentication.SessionAuthentication', + 'rest_framework_simplejwt.authentication.JWTAuthentication', + ), + 'DEFAULT_PERMISSION_CLASSES': ( + 'rest_framework.permissions.IsAuthenticated', + ), +} + +# Password validation +# https://docs.djangoproject.com/en/3.1/ref/settings/#auth-password-validators + +AUTH_PASSWORD_VALIDATORS = [ + { + 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + }, +] + +# Internationalization +# https://docs.djangoproject.com/en/3.1/topics/i18n/ + +LANGUAGE_CODE = 'en-us' + +TIME_ZONE = 'UTC' + +USE_I18N = True + +USE_L10N = True + +USE_TZ = True + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/3.1/howto/static-files/ + +STATIC_URL = '/static/' diff --git a/ch_nilva/ch_nilva/urls.py b/ch_nilva/ch_nilva/urls.py new file mode 100644 index 00000000..ffc79fe0 --- /dev/null +++ b/ch_nilva/ch_nilva/urls.py @@ -0,0 +1,25 @@ +"""ch_nilva URL Configuration + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/3.1/topics/http/urls/ +Examples: +Function views + 1. Add an import: from my_app import views + 2. Add a URL to urlpatterns: path('', views.home, name='home') +Class-based views + 1. Add an import: from other_app.views import Home + 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') +Including another URLconf + 1. Import the include() function: from django.urls import include, path + 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) +""" +from django.contrib import admin +from django.urls import path +from rest_framework_simplejwt.views import TokenObtainPairView, TokenRefreshView, TokenVerifyView + +urlpatterns = [ + path('admin/', admin.site.urls), + path('api/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'), + path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'), + path('api/token/verify/', TokenVerifyView.as_view(), name='token_verify'), +] diff --git a/ch_nilva/ch_nilva/wsgi.py b/ch_nilva/ch_nilva/wsgi.py new file mode 100644 index 00000000..90a4d2b4 --- /dev/null +++ b/ch_nilva/ch_nilva/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for ch_nilva project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/3.1/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'ch_nilva.settings') + +application = get_wsgi_application() diff --git a/ch_nilva/manage.py b/ch_nilva/manage.py new file mode 100644 index 00000000..3ab917fa --- /dev/null +++ b/ch_nilva/manage.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +"""Django's command-line utility for administrative tasks.""" +import os +import sys + + +def main(): + """Run administrative tasks.""" + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'ch_nilva.settings') + try: + from django.core.management import execute_from_command_line + except ImportError as exc: + raise ImportError( + "Couldn't import Django. Are you sure it's installed and " + "available on your PYTHONPATH environment variable? Did you " + "forget to activate a virtual environment?" + ) from exc + execute_from_command_line(sys.argv) + + +if __name__ == '__main__': + main() diff --git a/ch_nilva/requirements.txt b/ch_nilva/requirements.txt new file mode 100644 index 00000000..9c051855 --- /dev/null +++ b/ch_nilva/requirements.txt @@ -0,0 +1,25 @@ +asgiref==3.3.1 +certifi==2020.12.5 +cffi==1.14.5 +chardet==4.0.0 +cryptography==3.4.6 +defusedxml==0.7.1 +Django==3.1.7 +djangorestframework==3.12.2 +djangorestframework-simplejwt==4.6.0 +idna==2.10 +oauthlib==3.1.0 +psycopg2==2.8.6 +pycparser==2.20 +PyJWT==2.0.1 +python3-openid==3.2.0 +pytz==2021.1 +requests==2.25.1 +requests-oauthlib==1.3.0 +six==1.15.0 +social-auth-app-django==4.0.0 +social-auth-core==4.1.0 +sqlparse==0.4.1 +urllib3==1.26.4 +django-cors-headers==3.7.0 +drf-yasg==1.20.0 From 7a1945d0def702885535bee47d6310618b41a7b9 Mon Sep 17 00:00:00 2001 From: sadrakhamoshi Date: Thu, 25 Mar 2021 00:21:48 +0430 Subject: [PATCH 02/27] add basic user authentication --- ch_nilva/account/__init__.py | 0 ch_nilva/account/admin.py | 4 ++ ch_nilva/account/apps.py | 5 +++ ch_nilva/account/migrations/0001_initial.py | 42 +++++++++++++++++++++ ch_nilva/account/migrations/__init__.py | 0 ch_nilva/account/models.py | 13 +++++++ ch_nilva/account/serializer.py | 42 +++++++++++++++++++++ ch_nilva/account/tests.py | 3 ++ ch_nilva/account/urls.py | 9 +++++ ch_nilva/account/views.py | 16 ++++++++ ch_nilva/ch_nilva/settings.py | 6 ++- ch_nilva/ch_nilva/urls.py | 23 ++++++++--- ch_nilva/requirements.txt | 2 + 13 files changed, 157 insertions(+), 8 deletions(-) create mode 100644 ch_nilva/account/__init__.py create mode 100644 ch_nilva/account/admin.py create mode 100644 ch_nilva/account/apps.py create mode 100644 ch_nilva/account/migrations/0001_initial.py create mode 100644 ch_nilva/account/migrations/__init__.py create mode 100644 ch_nilva/account/models.py create mode 100644 ch_nilva/account/serializer.py create mode 100644 ch_nilva/account/tests.py create mode 100644 ch_nilva/account/urls.py create mode 100644 ch_nilva/account/views.py diff --git a/ch_nilva/account/__init__.py b/ch_nilva/account/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ch_nilva/account/admin.py b/ch_nilva/account/admin.py new file mode 100644 index 00000000..c4a654c4 --- /dev/null +++ b/ch_nilva/account/admin.py @@ -0,0 +1,4 @@ +from django.contrib import admin +from .models import User + +admin.site.register(User) diff --git a/ch_nilva/account/apps.py b/ch_nilva/account/apps.py new file mode 100644 index 00000000..f7b1d19c --- /dev/null +++ b/ch_nilva/account/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class AccountConfig(AppConfig): + name = 'account' diff --git a/ch_nilva/account/migrations/0001_initial.py b/ch_nilva/account/migrations/0001_initial.py new file mode 100644 index 00000000..2ba91ffe --- /dev/null +++ b/ch_nilva/account/migrations/0001_initial.py @@ -0,0 +1,42 @@ +# Generated by Django 3.1.7 on 2021-03-24 08:59 + +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', '0012_alter_user_first_name_max_length'), + ] + + operations = [ + 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=150, 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')), + ('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={ + 'db_table': 'users', + }, + managers=[ + ('objects', django.contrib.auth.models.UserManager()), + ], + ), + ] diff --git a/ch_nilva/account/migrations/__init__.py b/ch_nilva/account/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ch_nilva/account/models.py b/ch_nilva/account/models.py new file mode 100644 index 00000000..25f85863 --- /dev/null +++ b/ch_nilva/account/models.py @@ -0,0 +1,13 @@ +from django.contrib.auth.models import AbstractUser +from django.db import models + + +class User(AbstractUser): + ADMIN = 'admin' + NORMAL = 'normal' + + def __str__(self): + return self.username + + class Meta: + db_table = 'users' diff --git a/ch_nilva/account/serializer.py b/ch_nilva/account/serializer.py new file mode 100644 index 00000000..094b4b24 --- /dev/null +++ b/ch_nilva/account/serializer.py @@ -0,0 +1,42 @@ +from rest_framework import serializers +from .models import User + + +class RegistrationSerializer(serializers.ModelSerializer): + re_password = serializers.CharField(style={'input_type': 'password'}, write_only=True) + is_staff = serializers.BooleanField(default=False) + + class Meta: + model = User + fields = ['id', 'email', 'username', 'first_name', 'last_name', 'password', 're_password', 'is_staff'] + extra_kwargs = { + 'password': {'write_only': True}, + } + + def save(self, **kwargs): + is_staff = False + if 'is_staff' in self.validated_data: + is_staff = self.validated_data['is_staff'] + user = User( + email=self.validated_data['email'], + username=self.validated_data['username'], + first_name=self.validated_data['first_name'], + last_name=self.validated_data['last_name'], + is_staff=is_staff + ) + pas1 = self.validated_data['password'] + pas2 = self.validated_data['re_password'] + + """ confirm password """ + if pas1 != pas2: + raise serializers.ValidationError({'password': 'password are not match'}) + + user.set_password(pas1) + user.save() + return user + + +class UserSerializer(serializers.ModelSerializer): + class Meta: + model = User + fields = ['id', 'email', 'username', 'first_name', 'last_name'] diff --git a/ch_nilva/account/tests.py b/ch_nilva/account/tests.py new file mode 100644 index 00000000..7ce503c2 --- /dev/null +++ b/ch_nilva/account/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/ch_nilva/account/urls.py b/ch_nilva/account/urls.py new file mode 100644 index 00000000..e55f5d17 --- /dev/null +++ b/ch_nilva/account/urls.py @@ -0,0 +1,9 @@ +from django.urls import path +from .views import registration_view +from rest_framework_simplejwt.views import TokenObtainPairView, TokenRefreshView + +urlpatterns = [ + path('register', registration_view, name='register'), + path('login', TokenObtainPairView.as_view(), name='token_obtain_pair'), + path('refresh/token', TokenRefreshView.as_view(), name='token_obtain_pair'), +] diff --git a/ch_nilva/account/views.py b/ch_nilva/account/views.py new file mode 100644 index 00000000..0afe024a --- /dev/null +++ b/ch_nilva/account/views.py @@ -0,0 +1,16 @@ +from django.http import JsonResponse +from rest_framework import status +from .serializer import RegistrationSerializer, UserSerializer +from rest_framework.decorators import api_view, permission_classes +from rest_framework.permissions import AllowAny + + +@api_view(['POST']) +@permission_classes([AllowAny]) +def registration_view(request): + serializer = RegistrationSerializer(data=request.data) + + if serializer.is_valid(): + user = serializer.save() + return JsonResponse(UserSerializer(user).data, safe=False, status=status.HTTP_201_CREATED) + return JsonResponse(serializer.errors) diff --git a/ch_nilva/ch_nilva/settings.py b/ch_nilva/ch_nilva/settings.py index a35123bd..254052ae 100644 --- a/ch_nilva/ch_nilva/settings.py +++ b/ch_nilva/ch_nilva/settings.py @@ -35,9 +35,9 @@ 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', + 'rest_framework_simplejwt', 'rest_framework', - 'rest_framework.authtoken', - 'corsheaders', + 'account', 'drf_yasg', ] @@ -132,3 +132,5 @@ # https://docs.djangoproject.com/en/3.1/howto/static-files/ STATIC_URL = '/static/' + +AUTH_USER_MODEL = 'account.User' diff --git a/ch_nilva/ch_nilva/urls.py b/ch_nilva/ch_nilva/urls.py index ffc79fe0..7e10d247 100644 --- a/ch_nilva/ch_nilva/urls.py +++ b/ch_nilva/ch_nilva/urls.py @@ -14,12 +14,23 @@ 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ from django.contrib import admin -from django.urls import path -from rest_framework_simplejwt.views import TokenObtainPairView, TokenRefreshView, TokenVerifyView +from django.conf.urls import url +from django.urls import path, include +from drf_yasg import openapi +from drf_yasg.views import get_schema_view +from rest_framework.permissions import AllowAny + +schema_view = get_schema_view( + openapi.Info( + title="Nilva Challenge", + default_version='v1', + ), + public=True, + permission_classes=(AllowAny,), +) urlpatterns = [ - path('admin/', admin.site.urls), - path('api/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'), - path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'), - path('api/token/verify/', TokenVerifyView.as_view(), name='token_verify'), + path('api/admin/', admin.site.urls), + path('api/auth/', include('account.urls')), + url(r'^redoc/$', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'), ] diff --git a/ch_nilva/requirements.txt b/ch_nilva/requirements.txt index 9c051855..0f044ae1 100644 --- a/ch_nilva/requirements.txt +++ b/ch_nilva/requirements.txt @@ -20,6 +20,8 @@ six==1.15.0 social-auth-app-django==4.0.0 social-auth-core==4.1.0 sqlparse==0.4.1 +coreschema==0.0.4 urllib3==1.26.4 django-cors-headers==3.7.0 drf-yasg==1.20.0 +django-rest-swagger==2.1.2 From 503a61d25fa70b122d2bd1c39e2ec6eb90736330 Mon Sep 17 00:00:00 2001 From: sadrakhamoshi Date: Thu, 25 Mar 2021 01:13:03 +0430 Subject: [PATCH 03/27] create class for register api --- ch_nilva/account/serializer.py | 39 +++++++++++++++------------------- ch_nilva/account/urls.py | 4 ++-- ch_nilva/account/views.py | 20 ++++++----------- 3 files changed, 26 insertions(+), 37 deletions(-) diff --git a/ch_nilva/account/serializer.py b/ch_nilva/account/serializer.py index 094b4b24..1fed81ad 100644 --- a/ch_nilva/account/serializer.py +++ b/ch_nilva/account/serializer.py @@ -2,7 +2,7 @@ from .models import User -class RegistrationSerializer(serializers.ModelSerializer): +class UserRegistrationSerializer(serializers.ModelSerializer): re_password = serializers.CharField(style={'input_type': 'password'}, write_only=True) is_staff = serializers.BooleanField(default=False) @@ -11,32 +11,27 @@ class Meta: fields = ['id', 'email', 'username', 'first_name', 'last_name', 'password', 're_password', 'is_staff'] extra_kwargs = { 'password': {'write_only': True}, + 'first_name': {'required': True}, + 'last_name': {'required': True}, + 'email': {'required': True} } - def save(self, **kwargs): + def validate(self, attrs): + if attrs['password'] != attrs['re_password']: + raise serializers.ValidationError({'password': 'password are not match'}) + return attrs + + def create(self, validated_data): is_staff = False - if 'is_staff' in self.validated_data: - is_staff = self.validated_data['is_staff'] + if 'is_staff' in validated_data: + is_staff = validated_data['is_staff'] user = User( - email=self.validated_data['email'], - username=self.validated_data['username'], - first_name=self.validated_data['first_name'], - last_name=self.validated_data['last_name'], + email=validated_data['email'], + username=validated_data['username'], + first_name=validated_data['first_name'], + last_name=validated_data['last_name'], is_staff=is_staff ) - pas1 = self.validated_data['password'] - pas2 = self.validated_data['re_password'] - - """ confirm password """ - if pas1 != pas2: - raise serializers.ValidationError({'password': 'password are not match'}) - - user.set_password(pas1) + user.set_password(validated_data['password']) user.save() return user - - -class UserSerializer(serializers.ModelSerializer): - class Meta: - model = User - fields = ['id', 'email', 'username', 'first_name', 'last_name'] diff --git a/ch_nilva/account/urls.py b/ch_nilva/account/urls.py index e55f5d17..ab50fe7d 100644 --- a/ch_nilva/account/urls.py +++ b/ch_nilva/account/urls.py @@ -1,9 +1,9 @@ from django.urls import path -from .views import registration_view +from .views import UserRegisterApi from rest_framework_simplejwt.views import TokenObtainPairView, TokenRefreshView urlpatterns = [ - path('register', registration_view, name='register'), + path('register', UserRegisterApi.as_view(), name='register'), path('login', TokenObtainPairView.as_view(), name='token_obtain_pair'), path('refresh/token', TokenRefreshView.as_view(), name='token_obtain_pair'), ] diff --git a/ch_nilva/account/views.py b/ch_nilva/account/views.py index 0afe024a..ab6321be 100644 --- a/ch_nilva/account/views.py +++ b/ch_nilva/account/views.py @@ -1,16 +1,10 @@ -from django.http import JsonResponse -from rest_framework import status -from .serializer import RegistrationSerializer, UserSerializer -from rest_framework.decorators import api_view, permission_classes +from .serializer import UserRegistrationSerializer from rest_framework.permissions import AllowAny +from rest_framework import generics +from .models import User -@api_view(['POST']) -@permission_classes([AllowAny]) -def registration_view(request): - serializer = RegistrationSerializer(data=request.data) - - if serializer.is_valid(): - user = serializer.save() - return JsonResponse(UserSerializer(user).data, safe=False, status=status.HTTP_201_CREATED) - return JsonResponse(serializer.errors) +class UserRegisterApi(generics.CreateAPIView): + serializer_class = UserRegistrationSerializer + permission_classes = [AllowAny, ] + queryset = User.objects.all() From 60b252ae89b87667e7ef94624540fa68168ac762 Mon Sep 17 00:00:00 2001 From: sadrakhamoshi Date: Thu, 25 Mar 2021 01:38:27 +0430 Subject: [PATCH 04/27] create schedule app and model --- ch_nilva/ch_nilva/settings.py | 1 + ch_nilva/schedule/__init__.py | 0 ch_nilva/schedule/admin.py | 3 ++ ch_nilva/schedule/apps.py | 5 ++++ ch_nilva/schedule/migrations/0001_initial.py | 30 ++++++++++++++++++++ ch_nilva/schedule/migrations/__init__.py | 0 ch_nilva/schedule/models.py | 12 ++++++++ ch_nilva/schedule/tests.py | 3 ++ ch_nilva/schedule/views.py | 3 ++ 9 files changed, 57 insertions(+) create mode 100644 ch_nilva/schedule/__init__.py create mode 100644 ch_nilva/schedule/admin.py create mode 100644 ch_nilva/schedule/apps.py create mode 100644 ch_nilva/schedule/migrations/0001_initial.py create mode 100644 ch_nilva/schedule/migrations/__init__.py create mode 100644 ch_nilva/schedule/models.py create mode 100644 ch_nilva/schedule/tests.py create mode 100644 ch_nilva/schedule/views.py diff --git a/ch_nilva/ch_nilva/settings.py b/ch_nilva/ch_nilva/settings.py index 254052ae..94fc58b6 100644 --- a/ch_nilva/ch_nilva/settings.py +++ b/ch_nilva/ch_nilva/settings.py @@ -38,6 +38,7 @@ 'rest_framework_simplejwt', 'rest_framework', 'account', + 'schedule', 'drf_yasg', ] diff --git a/ch_nilva/schedule/__init__.py b/ch_nilva/schedule/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ch_nilva/schedule/admin.py b/ch_nilva/schedule/admin.py new file mode 100644 index 00000000..8c38f3f3 --- /dev/null +++ b/ch_nilva/schedule/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/ch_nilva/schedule/apps.py b/ch_nilva/schedule/apps.py new file mode 100644 index 00000000..4bb70791 --- /dev/null +++ b/ch_nilva/schedule/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class ScheduleConfig(AppConfig): + name = 'schedule' diff --git a/ch_nilva/schedule/migrations/0001_initial.py b/ch_nilva/schedule/migrations/0001_initial.py new file mode 100644 index 00000000..9b9316ff --- /dev/null +++ b/ch_nilva/schedule/migrations/0001_initial.py @@ -0,0 +1,30 @@ +# Generated by Django 3.1.7 on 2021-03-24 21:06 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='Task', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(max_length=50)), + ('description', models.CharField(blank=True, max_length=150)), + ('time_to_send', models.DateTimeField()), + ('owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + options={ + 'db_table': 'tasks', + }, + ), + ] diff --git a/ch_nilva/schedule/migrations/__init__.py b/ch_nilva/schedule/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ch_nilva/schedule/models.py b/ch_nilva/schedule/models.py new file mode 100644 index 00000000..99e38548 --- /dev/null +++ b/ch_nilva/schedule/models.py @@ -0,0 +1,12 @@ +from django.db import models +from account.models import User + + +class Task(models.Model): + title = models.CharField(max_length=50, blank=False) + owner = models.ForeignKey(to=User, on_delete=models.CASCADE) + description = models.CharField(max_length=150, blank=True) + time_to_send = models.DateTimeField(blank=False, ) + + class Meta: + db_table = 'tasks' diff --git a/ch_nilva/schedule/tests.py b/ch_nilva/schedule/tests.py new file mode 100644 index 00000000..7ce503c2 --- /dev/null +++ b/ch_nilva/schedule/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/ch_nilva/schedule/views.py b/ch_nilva/schedule/views.py new file mode 100644 index 00000000..91ea44a2 --- /dev/null +++ b/ch_nilva/schedule/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. From eea5a423fada79313a7edc0ec706f81bb7e134fd Mon Sep 17 00:00:00 2001 From: sadrakhamoshi Date: Fri, 26 Mar 2021 01:42:31 +0430 Subject: [PATCH 05/27] add celery into setting and __init__.py --- ch_nilva/ch_nilva/__init__.py | 3 +++ ch_nilva/ch_nilva/celery.py | 16 +++++++++++++++ ch_nilva/ch_nilva/settings.py | 7 +++++++ ch_nilva/ch_nilva/urls.py | 1 + ch_nilva/requirements.txt | 35 +++++++++++++++++++++++++++++---- ch_nilva/schedule/serializer.py | 17 ++++++++++++++++ ch_nilva/schedule/tasks.py | 8 ++++++++ ch_nilva/schedule/urls.py | 7 +++++++ ch_nilva/schedule/views.py | 25 +++++++++++++++++++++-- 9 files changed, 113 insertions(+), 6 deletions(-) create mode 100644 ch_nilva/ch_nilva/celery.py create mode 100644 ch_nilva/schedule/serializer.py create mode 100644 ch_nilva/schedule/tasks.py create mode 100644 ch_nilva/schedule/urls.py diff --git a/ch_nilva/ch_nilva/__init__.py b/ch_nilva/ch_nilva/__init__.py index e69de29b..fb989c4e 100644 --- a/ch_nilva/ch_nilva/__init__.py +++ b/ch_nilva/ch_nilva/__init__.py @@ -0,0 +1,3 @@ +from .celery import app as celery_app + +__all__ = ('celery_app',) diff --git a/ch_nilva/ch_nilva/celery.py b/ch_nilva/ch_nilva/celery.py new file mode 100644 index 00000000..076dba98 --- /dev/null +++ b/ch_nilva/ch_nilva/celery.py @@ -0,0 +1,16 @@ +import os + +from celery import Celery + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'ch_nilva.settings') + +app = Celery('ch_nilva') + +app.config_from_object('django.conf:settings', namespace='CELERY') + +app.autodiscover_tasks() + + +@app.task(bind=True) +def debug_task(self): + print(f'Request: {self.request!r}') diff --git a/ch_nilva/ch_nilva/settings.py b/ch_nilva/ch_nilva/settings.py index 94fc58b6..4e50419f 100644 --- a/ch_nilva/ch_nilva/settings.py +++ b/ch_nilva/ch_nilva/settings.py @@ -135,3 +135,10 @@ STATIC_URL = '/static/' AUTH_USER_MODEL = 'account.User' + +CELERY_BROKER_URL = 'redis://localhost:6379' +CELERY_RESULT_BACKEND = 'redis://localhost:6379' +CELERY_ACCEPT_CONTENT = ['application/json'] +CELERY_TASK_SERIALIZER = 'json' +CELERY_RESULT_SERIALIZER = 'json' +CELERY_TIMEZONE = TIME_ZONE diff --git a/ch_nilva/ch_nilva/urls.py b/ch_nilva/ch_nilva/urls.py index 7e10d247..3c40becc 100644 --- a/ch_nilva/ch_nilva/urls.py +++ b/ch_nilva/ch_nilva/urls.py @@ -32,5 +32,6 @@ urlpatterns = [ path('api/admin/', admin.site.urls), path('api/auth/', include('account.urls')), + path('api/tasks/', include('schedule.urls')), url(r'^redoc/$', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'), ] diff --git a/ch_nilva/requirements.txt b/ch_nilva/requirements.txt index 0f044ae1..6038bd84 100644 --- a/ch_nilva/requirements.txt +++ b/ch_nilva/requirements.txt @@ -1,27 +1,54 @@ +amqp==5.0.5 asgiref==3.3.1 +billiard==3.6.3.0 +celery==5.0.5 certifi==2020.12.5 cffi==1.14.5 chardet==4.0.0 +click==7.1.2 +click-didyoumean==0.0.3 +click-plugins==1.1.1 +click-repl==0.1.6 +coreapi==2.3.3 +coreschema==0.0.4 cryptography==3.4.6 defusedxml==0.7.1 Django==3.1.7 +django-cors-headers==3.7.0 +django-rest-swagger==2.1.2 djangorestframework==3.12.2 djangorestframework-simplejwt==4.6.0 +drf-yasg==1.20.0 idna==2.10 +importlib-metadata==3.7.3 +inflection==0.5.1 +itypes==1.2.0 +Jinja2==2.11.3 +kombu==5.0.2 +MarkupSafe==1.1.1 oauthlib==3.1.0 +openapi-codec==1.3.2 +packaging==20.9 +prompt-toolkit==3.0.18 psycopg2==2.8.6 pycparser==2.20 PyJWT==2.0.1 +pyparsing==2.4.7 python3-openid==3.2.0 pytz==2021.1 +redis==3.5.3 requests==2.25.1 requests-oauthlib==1.3.0 +ruamel.yaml==0.16.13 +ruamel.yaml.clib==0.2.2 +simplejson==3.17.2 six==1.15.0 social-auth-app-django==4.0.0 social-auth-core==4.1.0 sqlparse==0.4.1 -coreschema==0.0.4 +typing-extensions==3.7.4.3 +uritemplate==3.0.1 urllib3==1.26.4 -django-cors-headers==3.7.0 -drf-yasg==1.20.0 -django-rest-swagger==2.1.2 +vine==5.0.0 +wcwidth==0.2.5 +zipp==3.4.1 diff --git a/ch_nilva/schedule/serializer.py b/ch_nilva/schedule/serializer.py new file mode 100644 index 00000000..f8ca7d47 --- /dev/null +++ b/ch_nilva/schedule/serializer.py @@ -0,0 +1,17 @@ +from rest_framework import serializers +from account.models import User +from .models import Task + + +class OwnerSerializer(serializers.ModelSerializer): + class Meta: + model = User + fields = ['id', 'username', ] + + +class TaskSerializer(serializers.ModelSerializer): + owner = OwnerSerializer() + + class Meta: + model = Task + fields = '__all__' diff --git a/ch_nilva/schedule/tasks.py b/ch_nilva/schedule/tasks.py new file mode 100644 index 00000000..70f8ac9d --- /dev/null +++ b/ch_nilva/schedule/tasks.py @@ -0,0 +1,8 @@ +from celery import shared_task +from time import sleep + + +@shared_task() +def sleepy(duration): + sleep(duration) + return None diff --git a/ch_nilva/schedule/urls.py b/ch_nilva/schedule/urls.py new file mode 100644 index 00000000..b58bc807 --- /dev/null +++ b/ch_nilva/schedule/urls.py @@ -0,0 +1,7 @@ +from django.urls import path +from .views import TaskList, index + +urlpatterns = [ + path('', TaskList.as_view(), name='all tasks'), + path('index/', index, name='index') +] diff --git a/ch_nilva/schedule/views.py b/ch_nilva/schedule/views.py index 91ea44a2..34dc7924 100644 --- a/ch_nilva/schedule/views.py +++ b/ch_nilva/schedule/views.py @@ -1,3 +1,24 @@ -from django.shortcuts import render +from .models import Task +from .serializer import TaskSerializer +from rest_framework.generics import ListAPIView +from rest_framework.permissions import IsAuthenticated +from django.http.response import HttpResponse -# Create your views here. + +class TaskList(ListAPIView): + serializer_class = TaskSerializer + permission_classes = [IsAuthenticated, ] + + def get_queryset(self): + query = Task.objects.all() + if not self.request.is_staff: + return query.filter(owner=self.request.user) + return query + + +from .tasks import sleepy + + +def index(request): + sleepy.delay(10) + return HttpResponse('Nothing') From c426b198532245ab173ad9127b3b8ee38699239f Mon Sep 17 00:00:00 2001 From: sadrakhamoshi Date: Fri, 26 Mar 2021 02:12:17 +0430 Subject: [PATCH 06/27] add host email into setting and send_mail task --- ch_nilva/ch_nilva/settings.py | 10 ++++++++++ ch_nilva/requirements.txt | 1 + ch_nilva/schedule/tasks.py | 16 ++++++++++++++++ 3 files changed, 27 insertions(+) diff --git a/ch_nilva/ch_nilva/settings.py b/ch_nilva/ch_nilva/settings.py index 4e50419f..1230f47f 100644 --- a/ch_nilva/ch_nilva/settings.py +++ b/ch_nilva/ch_nilva/settings.py @@ -11,6 +11,7 @@ """ from pathlib import Path +from decouple import config # Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(__file__).resolve().parent.parent @@ -136,9 +137,18 @@ AUTH_USER_MODEL = 'account.User' +""" celery conf """ CELERY_BROKER_URL = 'redis://localhost:6379' CELERY_RESULT_BACKEND = 'redis://localhost:6379' CELERY_ACCEPT_CONTENT = ['application/json'] CELERY_TASK_SERIALIZER = 'json' CELERY_RESULT_SERIALIZER = 'json' CELERY_TIMEZONE = TIME_ZONE + +""" email conf """ +EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' +EMAIL_HOST = 'smtp.gmail.com' +EMAIL_PORT = 587 +EMAIL_HOST_USER = 'talkzone2021@gmail.com' +EMAIL_HOST_PASSWORD = config('SECRET_KEY', default='nothing') +EMAIL_USE_TLS = True diff --git a/ch_nilva/requirements.txt b/ch_nilva/requirements.txt index 6038bd84..10cd827b 100644 --- a/ch_nilva/requirements.txt +++ b/ch_nilva/requirements.txt @@ -34,6 +34,7 @@ psycopg2==2.8.6 pycparser==2.20 PyJWT==2.0.1 pyparsing==2.4.7 +python-decouple==3.4 python3-openid==3.2.0 pytz==2021.1 redis==3.5.3 diff --git a/ch_nilva/schedule/tasks.py b/ch_nilva/schedule/tasks.py index 70f8ac9d..655f0bb8 100644 --- a/ch_nilva/schedule/tasks.py +++ b/ch_nilva/schedule/tasks.py @@ -1,8 +1,24 @@ from celery import shared_task from time import sleep +from django.core.mail import send_mail +from ch_nilva.settings import EMAIL_HOST_USER @shared_task() def sleepy(duration): sleep(duration) return None + + +MESSAGE = 'This is from you task schedule Nilva. Your Times of Your task is come ...' + + +@shared_task(name='send_email') +def send_mail(): + send_mail( + 'Schedule Nilva', + MESSAGE, + EMAIL_HOST_USER, + ['sadraproton@gmail.com'], + fail_silently=False) + return None From 021935c99726ae8d81387f271d6e2ec89089f5e9 Mon Sep 17 00:00:00 2001 From: sadrakhamoshi Date: Sun, 28 Mar 2021 11:29:04 +0430 Subject: [PATCH 07/27] setup celery in project --- ch_nilva/ch_nilva/settings.py | 1 + ch_nilva/schedule/admin.py | 2 ++ ch_nilva/schedule/tasks.py | 27 ++++++++++----------------- ch_nilva/schedule/views.py | 9 ++++----- 4 files changed, 17 insertions(+), 22 deletions(-) diff --git a/ch_nilva/ch_nilva/settings.py b/ch_nilva/ch_nilva/settings.py index 1230f47f..2a276172 100644 --- a/ch_nilva/ch_nilva/settings.py +++ b/ch_nilva/ch_nilva/settings.py @@ -151,4 +151,5 @@ EMAIL_PORT = 587 EMAIL_HOST_USER = 'talkzone2021@gmail.com' EMAIL_HOST_PASSWORD = config('SECRET_KEY', default='nothing') +DEFAULT_FROM_EMAIL = 'talkzone2021@gmail.com' EMAIL_USE_TLS = True diff --git a/ch_nilva/schedule/admin.py b/ch_nilva/schedule/admin.py index 8c38f3f3..4f907960 100644 --- a/ch_nilva/schedule/admin.py +++ b/ch_nilva/schedule/admin.py @@ -1,3 +1,5 @@ from django.contrib import admin +from .models import Task # Register your models here. +admin.site.register(Task) diff --git a/ch_nilva/schedule/tasks.py b/ch_nilva/schedule/tasks.py index 655f0bb8..cbbb8a28 100644 --- a/ch_nilva/schedule/tasks.py +++ b/ch_nilva/schedule/tasks.py @@ -1,24 +1,17 @@ from celery import shared_task from time import sleep +from celery.contrib import rdb from django.core.mail import send_mail -from ch_nilva.settings import EMAIL_HOST_USER +MESSAGE = 'This is from you task schedule Nilva. You scheduled this time for your task. Thanks for using Nilva' -@shared_task() -def sleepy(duration): - sleep(duration) - return None - - -MESSAGE = 'This is from you task schedule Nilva. Your Times of Your task is come ...' - -@shared_task(name='send_email') -def send_mail(): - send_mail( - 'Schedule Nilva', - MESSAGE, - EMAIL_HOST_USER, - ['sadraproton@gmail.com'], +@shared_task() +def send_task_mail(email): + msg = send_mail( + subject='Schedule Nilva', + message=MESSAGE, + from_email=None, + recipient_list=[email], fail_silently=False) - return None + return msg diff --git a/ch_nilva/schedule/views.py b/ch_nilva/schedule/views.py index 34dc7924..76b73a1b 100644 --- a/ch_nilva/schedule/views.py +++ b/ch_nilva/schedule/views.py @@ -3,6 +3,8 @@ from rest_framework.generics import ListAPIView from rest_framework.permissions import IsAuthenticated from django.http.response import HttpResponse +from django.core.mail import send_mail +from . import tasks class TaskList(ListAPIView): @@ -16,9 +18,6 @@ def get_queryset(self): return query -from .tasks import sleepy - - def index(request): - sleepy.delay(10) - return HttpResponse('Nothing') + msg = tasks.send_task_mail.delay('sadrakhamoshi7@gmail.com') + return HttpResponse("msg") From 1b98b71c58d8d90651029343a99fa16d10cd7a50 Mon Sep 17 00:00:00 2001 From: sadrakhamoshi Date: Mon, 29 Mar 2021 15:18:10 +0430 Subject: [PATCH 08/27] add field is_admin in account/models.py --- ch_nilva/account/migrations/0001_initial.py | 5 +++-- ch_nilva/account/models.py | 4 ++-- ch_nilva/account/serializer.py | 11 +++++------ ch_nilva/schedule/views.py | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/ch_nilva/account/migrations/0001_initial.py b/ch_nilva/account/migrations/0001_initial.py index 2ba91ffe..4dc56d42 100644 --- a/ch_nilva/account/migrations/0001_initial.py +++ b/ch_nilva/account/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 3.1.7 on 2021-03-24 08:59 +# Generated by Django 3.1.7 on 2021-03-28 08:36 import django.contrib.auth.models import django.contrib.auth.validators @@ -26,9 +26,10 @@ class Migration(migrations.Migration): ('first_name', models.CharField(blank=True, max_length=150, 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')), + ('is_staff', models.BooleanField(default=True, verbose_name='staff status')), + ('is_admin', models.BooleanField(default=False, verbose_name='admin status')), ('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')), ], diff --git a/ch_nilva/account/models.py b/ch_nilva/account/models.py index 25f85863..cffa1fb6 100644 --- a/ch_nilva/account/models.py +++ b/ch_nilva/account/models.py @@ -3,8 +3,8 @@ class User(AbstractUser): - ADMIN = 'admin' - NORMAL = 'normal' + is_staff = models.BooleanField(default=True, verbose_name='staff status') + is_admin = models.BooleanField(default=False, verbose_name='admin status') def __str__(self): return self.username diff --git a/ch_nilva/account/serializer.py b/ch_nilva/account/serializer.py index 1fed81ad..38e00fe7 100644 --- a/ch_nilva/account/serializer.py +++ b/ch_nilva/account/serializer.py @@ -4,11 +4,10 @@ class UserRegistrationSerializer(serializers.ModelSerializer): re_password = serializers.CharField(style={'input_type': 'password'}, write_only=True) - is_staff = serializers.BooleanField(default=False) class Meta: model = User - fields = ['id', 'email', 'username', 'first_name', 'last_name', 'password', 're_password', 'is_staff'] + fields = ['id', 'email', 'username', 'first_name', 'last_name', 'password', 're_password', 'is_admin', ] extra_kwargs = { 'password': {'write_only': True}, 'first_name': {'required': True}, @@ -22,15 +21,15 @@ def validate(self, attrs): return attrs def create(self, validated_data): - is_staff = False - if 'is_staff' in validated_data: - is_staff = validated_data['is_staff'] + is_admin = False + if 'is_admin' in validated_data: + is_admin = validated_data['is_admin'] user = User( email=validated_data['email'], username=validated_data['username'], first_name=validated_data['first_name'], last_name=validated_data['last_name'], - is_staff=is_staff + is_admin=is_admin ) user.set_password(validated_data['password']) user.save() diff --git a/ch_nilva/schedule/views.py b/ch_nilva/schedule/views.py index 76b73a1b..4e6945ff 100644 --- a/ch_nilva/schedule/views.py +++ b/ch_nilva/schedule/views.py @@ -13,7 +13,7 @@ class TaskList(ListAPIView): def get_queryset(self): query = Task.objects.all() - if not self.request.is_staff: + if not self.request.is_admin: return query.filter(owner=self.request.user) return query From 4d80a96a4ee98fb18c149098b305edc253682a28 Mon Sep 17 00:00:00 2001 From: sadrakhamoshi Date: Mon, 29 Mar 2021 15:18:46 +0430 Subject: [PATCH 09/27] customize admin_panel for manage accounts --- ch_nilva/account/admin.py | 48 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/ch_nilva/account/admin.py b/ch_nilva/account/admin.py index c4a654c4..1b826246 100644 --- a/ch_nilva/account/admin.py +++ b/ch_nilva/account/admin.py @@ -1,4 +1,50 @@ from django.contrib import admin from .models import User +from django import forms +from schedule.models import Task -admin.site.register(User) + +@admin.register(User) +class CustomAccountAdmin(admin.ModelAdmin): + list_display = ('username', 'get_fullname', 'is_admin', 'is_superuser',) + list_filter = ('username', 'email', 'is_admin',) + + def get_fullname(self, obj): + return obj.first_name + ' ' + obj.last_name + + def has_add_permission(self, request): + return request.user.is_superuser or request.user.is_admin + + def has_module_permission(self, request): + if request.user.is_anonymous: + return False + return True + + def has_view_permission(self, request, obj=None): + return True + + def has_change_permission(self, request, obj=None): + return request.user.is_admin or request.user.is_superuser + + def get_queryset(self, request): + qs = super(CustomAccountAdmin, self).get_queryset(request) + if request.user.is_superuser: + return qs + if request.user.is_admin: + qs = qs.filter(is_superuser=False) + return qs + return qs.filter(username=request.user.username) + + def add_view(self, request, form_url='', extra_context=None): + if request.user.is_superuser: + self.exclude = () + elif request.user.is_admin: + self.exclude = ('is_superuser', 'user_permissions', 'groups', 'is_staff', 'is_active') + return super(CustomAccountAdmin, self).add_view(request, form_url, extra_context) + + def change_view(self, request, object_id, form_url='', extra_context=None): + if request.user.is_superuser: + self.exclude = () + elif request.user.is_admin: + self.exclude = ('is_superuser', 'user_permissions', 'groups', 'is_staff', 'is_active') + return super(CustomAccountAdmin, self).change_view(request, object_id, form_url, extra_context) From 901c2a92f66858f81cd0141ce2556003dd21a1af Mon Sep 17 00:00:00 2001 From: sadrakhamoshi Date: Tue, 30 Mar 2021 00:12:37 +0430 Subject: [PATCH 10/27] add celery_task_id field into Task Model --- ch_nilva/schedule/migrations/0001_initial.py | 3 ++- ch_nilva/schedule/models.py | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/ch_nilva/schedule/migrations/0001_initial.py b/ch_nilva/schedule/migrations/0001_initial.py index 9b9316ff..eedbc489 100644 --- a/ch_nilva/schedule/migrations/0001_initial.py +++ b/ch_nilva/schedule/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 3.1.7 on 2021-03-24 21:06 +# Generated by Django 3.1.7 on 2021-03-29 19:38 from django.conf import settings from django.db import migrations, models @@ -21,6 +21,7 @@ class Migration(migrations.Migration): ('title', models.CharField(max_length=50)), ('description', models.CharField(blank=True, max_length=150)), ('time_to_send', models.DateTimeField()), + ('celery_task_id', models.CharField(blank=True, max_length=250)), ('owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], options={ diff --git a/ch_nilva/schedule/models.py b/ch_nilva/schedule/models.py index 99e38548..2fbdee5b 100644 --- a/ch_nilva/schedule/models.py +++ b/ch_nilva/schedule/models.py @@ -7,6 +7,7 @@ class Task(models.Model): owner = models.ForeignKey(to=User, on_delete=models.CASCADE) description = models.CharField(max_length=150, blank=True) time_to_send = models.DateTimeField(blank=False, ) + celery_task_id = models.CharField(blank=True, max_length=250) class Meta: db_table = 'tasks' From 2981ac97b6911974a79dca5c78aa2ca1e6629e29 Mon Sep 17 00:00:00 2001 From: sadrakhamoshi Date: Tue, 30 Mar 2021 00:13:09 +0430 Subject: [PATCH 11/27] customize task_admin_panel for manage Tasks --- ch_nilva/account/admin.py | 3 ++ ch_nilva/schedule/admin.py | 67 ++++++++++++++++++++++++++++++++++++-- ch_nilva/schedule/tasks.py | 4 +-- ch_nilva/schedule/views.py | 3 +- 4 files changed, 72 insertions(+), 5 deletions(-) diff --git a/ch_nilva/account/admin.py b/ch_nilva/account/admin.py index 1b826246..62d16ea0 100644 --- a/ch_nilva/account/admin.py +++ b/ch_nilva/account/admin.py @@ -20,6 +20,9 @@ def has_module_permission(self, request): return False return True + def has_delete_permission(self, request, obj=None): + return request.user.is_admin or request.user.is_superuser + def has_view_permission(self, request, obj=None): return True diff --git a/ch_nilva/schedule/admin.py b/ch_nilva/schedule/admin.py index 4f907960..f12f92f0 100644 --- a/ch_nilva/schedule/admin.py +++ b/ch_nilva/schedule/admin.py @@ -1,5 +1,68 @@ from django.contrib import admin from .models import Task +from .tasks import send_task_mail +from celery import shared_task +from celery.app.control import Control +from ch_nilva.celery import app -# Register your models here. -admin.site.register(Task) + +@admin.register(Task) +class CustomTaskAdmin(admin.ModelAdmin): + list_display = ('title', 'time_to_send',) + list_filter = ('time_to_send', 'owner',) + search_fields = ('owner', 'title',) + + # exclude = ('celery_task_id',) + + def get_queryset(self, request): + qs = super(CustomTaskAdmin, self).get_queryset(request) + if not request.user.is_admin: + return qs.filter(owner=request.user) + return qs + + def has_module_permission(self, request): + return True + + def has_add_permission(self, request): + return True + + def has_view_permission(self, request, obj=None): + return True + + def has_change_permission(self, request, obj=None): + if request.user.is_anonymous: + return super(CustomTaskAdmin, self).has_change_permission(request, obj) + return request.user.is_admin or request.user.is_superuser + + def get_form(self, request, obj=None, change=False, **kwargs): + user = request.user + form = super(CustomTaskAdmin, self).get_form(request, obj, change, **kwargs) + form.base_fields['celery_task_id'].disabled = True + if (not user.is_admin) and (not user.is_superuser): + form.base_fields['owner'].initial = user + form.base_fields['owner'].disabled = True + return form + else: + form.base_fields['owner'].diabled = False + return form + + def save_model(self, request, obj, form, change): + # changed data + if change: + if 'time_to_send' in form.changed_data: + task_obj = Task.objects.get(id=obj.id) + control = Control(app) + control.terminate(task_id=task_obj.celery_task_id) + id = send_task_mail.apply_async(args=[task_obj.owner.email]) + obj.celery_task_id = id + super(CustomTaskAdmin, self).save_model(request, obj, form, change) + + # new task added + else: + email = obj.owner.email + time_to_send = obj.time_to_send + # send_task_mail(email) + id = send_task_mail.apply_async(args=[email]) + obj.celery_task_id = id + super(CustomTaskAdmin, self).save_model(request, obj, form, change) + super(CustomTaskAdmin, self).save_model(request, obj, form, change) diff --git a/ch_nilva/schedule/tasks.py b/ch_nilva/schedule/tasks.py index cbbb8a28..46660fcb 100644 --- a/ch_nilva/schedule/tasks.py +++ b/ch_nilva/schedule/tasks.py @@ -1,4 +1,4 @@ -from celery import shared_task +from celery import shared_task, current_task from time import sleep from celery.contrib import rdb from django.core.mail import send_mail @@ -6,7 +6,7 @@ MESSAGE = 'This is from you task schedule Nilva. You scheduled this time for your task. Thanks for using Nilva' -@shared_task() +@shared_task def send_task_mail(email): msg = send_mail( subject='Schedule Nilva', diff --git a/ch_nilva/schedule/views.py b/ch_nilva/schedule/views.py index 4e6945ff..812e880c 100644 --- a/ch_nilva/schedule/views.py +++ b/ch_nilva/schedule/views.py @@ -5,6 +5,7 @@ from django.http.response import HttpResponse from django.core.mail import send_mail from . import tasks +from django.shortcuts import get_object_or_404 class TaskList(ListAPIView): @@ -20,4 +21,4 @@ def get_queryset(self): def index(request): msg = tasks.send_task_mail.delay('sadrakhamoshi7@gmail.com') - return HttpResponse("msg") + return HttpResponse(msg) From 456e4745500c9a97d6ecb288226510515d773e7a Mon Sep 17 00:00:00 2001 From: sadrakhamoshi Date: Tue, 30 Mar 2021 00:13:32 +0430 Subject: [PATCH 12/27] gitignore --- ch_nilva/.gitignore | 349 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 349 insertions(+) create mode 100644 ch_nilva/.gitignore diff --git a/ch_nilva/.gitignore b/ch_nilva/.gitignore new file mode 100644 index 00000000..0c0d7e1a --- /dev/null +++ b/ch_nilva/.gitignore @@ -0,0 +1,349 @@ + +# Created by https://www.toptal.com/developers/gitignore/api/django,pycharm,venv,python +# Edit at https://www.toptal.com/developers/gitignore?templates=django,pycharm,venv,python + +### secret codes ### +*.env + +### Django ### +*.log +*.pot +*.pyc +__pycache__/ +local_settings.py +db.sqlite3 +db.sqlite3-journal +media + +# If your build process includes running collectstatic, then you probably don't need or want to include staticfiles/ +# in your Git repository. Update and uncomment the following line accordingly. +# /staticfiles/ + +static/ + +### Django.Python Stack ### +# Byte-compiled / optimized / DLL files +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +parts/ +sdist/ +var/ +wheels/ +pip-wheel-metadata/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +pytestdebug.log + +# Translations +*.mo + +# Django stuff: + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ +doc/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +.python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +#poetry.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +# .env +.env/ +.venv/ +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ +pythonenv* + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# operating system-related files +*.DS_Store #file properties cache/storage on macOS +Thumbs.db #thumbnail cache on Windows + +# profiling data +.prof + + +### PyCharm ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/ +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + +### PyCharm Patch ### +# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 + +# *.iml +# modules.xml +# .idea/misc.xml +# *.ipr + +# Sonarlint plugin +# https://plugins.jetbrains.com/plugin/7973-sonarlint +.idea/**/sonarlint/ + +# SonarQube Plugin +# https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin +.idea/**/sonarIssues.xml + +# Markdown Navigator plugin +# https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced +.idea/**/markdown-navigator.xml +.idea/**/markdown-navigator-enh.xml +.idea/**/markdown-navigator/ + +# Cache file creation bug +# See https://youtrack.jetbrains.com/issue/JBR-2257 +.idea/$CACHE_FILE$ + +# CodeStream plugin +# https://plugins.jetbrains.com/plugin/12206-codestream +.idea/codestream.xml + +### Python ### +# Byte-compiled / optimized / DLL files + +# C extensions + +# Distribution / packaging + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. + +# Installer logs + +# Unit test / coverage reports + +# Translations + +# Django stuff: + +# Flask stuff: + +# Scrapy stuff: + +# Sphinx documentation + +# PyBuilder + +# Jupyter Notebook + +# IPython + +# pyenv + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. + +# poetry + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow + +# Celery stuff + +# SageMath parsed files + +# Environments +# .env + +# Spyder project settings + +# Rope project settings + +# mkdocs documentation + +# mypy + +# Pyre type checker + +# pytype static type analyzer + +# operating system-related files + +# profiling data + + +### venv ### +# Virtualenv +# http://iamzed.com/2009/05/07/a-primer-on-virtualenv/ +[Bb]in +[Ii]nclude +[Ll]ib +[Ll]ib64 +[Ll]ocal +[Ss]cripts +pyvenv.cfg +.venv +pip-selfcheck.json + +# End of https://www.toptal.com/developers/gitignore/api/django,pycharm,venv,python \ No newline at end of file From 285d620b2159d1e34d9f23ce8687fff4fbdeaf08 Mon Sep 17 00:00:00 2001 From: sadrakhamoshi Date: Tue, 30 Mar 2021 13:20:51 +0430 Subject: [PATCH 13/27] add list_display link_owner_tasks --- ch_nilva/account/admin.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/ch_nilva/account/admin.py b/ch_nilva/account/admin.py index 62d16ea0..0a3f207e 100644 --- a/ch_nilva/account/admin.py +++ b/ch_nilva/account/admin.py @@ -1,14 +1,27 @@ from django.contrib import admin from .models import User -from django import forms from schedule.models import Task +from django.urls import reverse +from django.utils.html import format_html +from django.utils.http import urlencode @admin.register(User) class CustomAccountAdmin(admin.ModelAdmin): - list_display = ('username', 'get_fullname', 'is_admin', 'is_superuser',) + list_display = ('username', 'get_fullname', 'is_admin', 'is_superuser', 'get_link_owner_task') list_filter = ('username', 'email', 'is_admin',) + def get_link_owner_task(self, obj): + count = len(Task.objects.filter(owner=obj)) + url = ( + reverse("admin:schedule_task_changelist") + + '?' + + urlencode({"owner__id__exact": f"{obj.id}"}) + ) + return format_html('{} Tasks', url, count) + + get_link_owner_task.short_description = 'Tasks' + def get_fullname(self, obj): return obj.first_name + ' ' + obj.last_name From 6daeed134bdbbe099d3a2f558d06c9bcd63d744b Mon Sep 17 00:00:00 2001 From: sadrakhamoshi Date: Tue, 30 Mar 2021 13:21:40 +0430 Subject: [PATCH 14/27] change queryset of schedule/task model --- ch_nilva/schedule/views.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/ch_nilva/schedule/views.py b/ch_nilva/schedule/views.py index 812e880c..c5e391fd 100644 --- a/ch_nilva/schedule/views.py +++ b/ch_nilva/schedule/views.py @@ -3,9 +3,7 @@ from rest_framework.generics import ListAPIView from rest_framework.permissions import IsAuthenticated from django.http.response import HttpResponse -from django.core.mail import send_mail from . import tasks -from django.shortcuts import get_object_or_404 class TaskList(ListAPIView): @@ -13,10 +11,14 @@ class TaskList(ListAPIView): permission_classes = [IsAuthenticated, ] def get_queryset(self): + user = self.request.user query = Task.objects.all() - if not self.request.is_admin: + if user.is_superuser: + return query + elif user.is_admin: + return query.filter(owner__is_superuser=False) + else: return query.filter(owner=self.request.user) - return query def index(request): From 94e7d905c863ae9db39bf274cb02d21f85288049 Mon Sep 17 00:00:00 2001 From: sadrakhamoshi Date: Tue, 30 Mar 2021 13:22:20 +0430 Subject: [PATCH 15/27] change schedule\admin.py --- ch_nilva/schedule/admin.py | 61 +++++++++++++++++++++++++++----------- 1 file changed, 43 insertions(+), 18 deletions(-) diff --git a/ch_nilva/schedule/admin.py b/ch_nilva/schedule/admin.py index f12f92f0..a70d61a0 100644 --- a/ch_nilva/schedule/admin.py +++ b/ch_nilva/schedule/admin.py @@ -1,24 +1,36 @@ from django.contrib import admin from .models import Task from .tasks import send_task_mail -from celery import shared_task from celery.app.control import Control from ch_nilva.celery import app +from django.urls import reverse +from django.utils.html import format_html @admin.register(Task) class CustomTaskAdmin(admin.ModelAdmin): - list_display = ('title', 'time_to_send',) + list_display = ('title', 'time_to_send', 'get_task_link',) list_filter = ('time_to_send', 'owner',) search_fields = ('owner', 'title',) + exclude = ('celery_task_id',) - # exclude = ('celery_task_id',) + def get_task_link(self, obj): + username = obj.owner.username + url = ( + reverse("admin:account_user_change", args=(obj.owner.id,)) + ) + return format_html(' {} ', url, username) + + get_task_link.short_description = 'owner' def get_queryset(self, request): qs = super(CustomTaskAdmin, self).get_queryset(request) - if not request.user.is_admin: + if request.user.is_superuser: + return qs + elif request.user.is_admin: + return qs.filter(owner__is_superuser=False) + else: return qs.filter(owner=request.user) - return qs def has_module_permission(self, request): return True @@ -29,22 +41,37 @@ def has_add_permission(self, request): def has_view_permission(self, request, obj=None): return True + def has_delete_permission(self, request, obj=None): + if request.user.is_anonymous: + return super(CustomTaskAdmin, self).has_change_permission(request, obj) + return request.user.is_superuser or request.user.is_admin + def has_change_permission(self, request, obj=None): if request.user.is_anonymous: return super(CustomTaskAdmin, self).has_change_permission(request, obj) return request.user.is_admin or request.user.is_superuser def get_form(self, request, obj=None, change=False, **kwargs): - user = request.user form = super(CustomTaskAdmin, self).get_form(request, obj, change, **kwargs) - form.base_fields['celery_task_id'].disabled = True - if (not user.is_admin) and (not user.is_superuser): - form.base_fields['owner'].initial = user - form.base_fields['owner'].disabled = True - return form - else: - form.base_fields['owner'].diabled = False - return form + """ add page for normal users """ + if not change: + user = request.user + # form.base_fields['celery_task_id'].disabled = True + if (not user.is_admin) and (not user.is_superuser): + form.base_fields['owner'].initial = user + form.base_fields['owner'].disabled = True + return form + else: + form.base_fields['owner'].diabled = False + return form + return form + + def delete_model(self, request, obj): + """ cancel the task from broker """ + celery_task_id = obj.celery_task_id + con = Control(app) + con.terminate(task_id=celery_task_id) + super(CustomTaskAdmin, self).delete_model(request, obj) def save_model(self, request, obj, form, change): # changed data @@ -53,7 +80,7 @@ def save_model(self, request, obj, form, change): task_obj = Task.objects.get(id=obj.id) control = Control(app) control.terminate(task_id=task_obj.celery_task_id) - id = send_task_mail.apply_async(args=[task_obj.owner.email]) + id = send_task_mail.apply_async(args=[task_obj.owner.email], eta=obj.time_to_send) obj.celery_task_id = id super(CustomTaskAdmin, self).save_model(request, obj, form, change) @@ -61,8 +88,6 @@ def save_model(self, request, obj, form, change): else: email = obj.owner.email time_to_send = obj.time_to_send - # send_task_mail(email) - id = send_task_mail.apply_async(args=[email]) + id = send_task_mail.apply_async(args=[email], eta=time_to_send) obj.celery_task_id = id super(CustomTaskAdmin, self).save_model(request, obj, form, change) - super(CustomTaskAdmin, self).save_model(request, obj, form, change) From 6b31fffb1b6330396746b5cddc80a15580bac482 Mon Sep 17 00:00:00 2001 From: sadrakhamoshi Date: Tue, 30 Mar 2021 16:05:31 +0430 Subject: [PATCH 16/27] write test for authentication --- ch_nilva/account/tests.py | 54 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/ch_nilva/account/tests.py b/ch_nilva/account/tests.py index 7ce503c2..fd45107e 100644 --- a/ch_nilva/account/tests.py +++ b/ch_nilva/account/tests.py @@ -1,3 +1,55 @@ from django.test import TestCase +from rest_framework import status +from rest_framework.test import APIClient +from .models import User -# Create your tests here. + +class AuthenticationTest(TestCase): + + def setUp(self): + self.admin = User.objects.create_user(email='test1@gmail.com', + username='test1', + password="test123", + first_name="test1", + last_name='test1', + is_admin=True) + self.data = { + 'username': 'test1', + 'password': 'test123' + } + + def test_login(self): + client = APIClient() + response = client.post('/api/auth/login', self.data, format='json') + self.assertEqual(response.status_code, status.HTTP_200_OK) + + def test_login_wrong_username(self): + self.data['username'] = 'test55' + client = APIClient() + response = client.post('/api/auth/login', self.data, format='json') + self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) + + def test_login_wrong_password(self): + self.data['password'] = 'test12345' + client = APIClient() + response = client.post('/api/auth/login', self.data, format='json') + self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) + + def test_login_without_password(self): + self.data = {'username': 'test1'} + client = APIClient() + response = client.post('/api/auth/login', self.data, format='json') + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + def test_login_without_username(self): + self.data = {'password': 'test123'} + client = APIClient() + response = client.post('/api/auth/login', self.data, format='json') + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + def test_refresh_token(self): + client = APIClient() + response1 = client.post('/api/auth/login', self.data, format='json') + refresh = {"refresh": str(response1.data['refresh'])} + response = client.post('/api/auth/refresh/token', refresh, format='json') + self.assertEqual(response.status_code, status.HTTP_200_OK) From 8b2dfb510a0605cb5228e9c412c518ff9ab4fd0a Mon Sep 17 00:00:00 2001 From: sadrakhamoshi Date: Tue, 30 Mar 2021 16:06:19 +0430 Subject: [PATCH 17/27] add new policy for create task in schedule/admin --- ch_nilva/schedule/admin.py | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/ch_nilva/schedule/admin.py b/ch_nilva/schedule/admin.py index a70d61a0..38f26efb 100644 --- a/ch_nilva/schedule/admin.py +++ b/ch_nilva/schedule/admin.py @@ -5,6 +5,7 @@ from ch_nilva.celery import app from django.urls import reverse from django.utils.html import format_html +from account.models import User @admin.register(Task) @@ -12,7 +13,7 @@ class CustomTaskAdmin(admin.ModelAdmin): list_display = ('title', 'time_to_send', 'get_task_link',) list_filter = ('time_to_send', 'owner',) search_fields = ('owner', 'title',) - exclude = ('celery_task_id',) + readonly_fields = ('celery_task_id',) def get_task_link(self, obj): username = obj.owner.username @@ -51,20 +52,20 @@ def has_change_permission(self, request, obj=None): return super(CustomTaskAdmin, self).has_change_permission(request, obj) return request.user.is_admin or request.user.is_superuser - def get_form(self, request, obj=None, change=False, **kwargs): - form = super(CustomTaskAdmin, self).get_form(request, obj, change, **kwargs) - """ add page for normal users """ - if not change: - user = request.user - # form.base_fields['celery_task_id'].disabled = True - if (not user.is_admin) and (not user.is_superuser): - form.base_fields['owner'].initial = user - form.base_fields['owner'].disabled = True - return form + # set policy of making task for other users : normal -> normal + # admin -> admin, normal | superuser -> superuser, admin, normal + def formfield_for_foreignkey(self, db_field, request, **kwargs): + query = super(CustomTaskAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) + if db_field.name == 'owner': + if request.user.is_superuser: + return query + if request.user.is_admin: + kwargs['queryset'] = User.objects.filter(is_superuser=False) else: - form.base_fields['owner'].diabled = False - return form - return form + kwargs['queryset'] = User.objects.filter(id=request.user.id) + return super(CustomTaskAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) + else: + return query def delete_model(self, request, obj): """ cancel the task from broker """ From ca19cd63311e94c0f8fc59048db358ead299df11 Mon Sep 17 00:00:00 2001 From: sadrakhamoshi Date: Tue, 30 Mar 2021 16:22:25 +0430 Subject: [PATCH 18/27] task pictures --- ch_nilva/pic/SharedScreenshot.jpg | Bin 0 -> 172861 bytes ch_nilva/pic/SharedScreenshot2.jpg | Bin 0 -> 162775 bytes ch_nilva/pic/SharedScreenshot3.jpg | Bin 0 -> 101680 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 ch_nilva/pic/SharedScreenshot.jpg create mode 100644 ch_nilva/pic/SharedScreenshot2.jpg create mode 100644 ch_nilva/pic/SharedScreenshot3.jpg diff --git a/ch_nilva/pic/SharedScreenshot.jpg b/ch_nilva/pic/SharedScreenshot.jpg new file mode 100644 index 0000000000000000000000000000000000000000..74b03f72a2fe9f44de74da91e453d92b48c1d8b7 GIT binary patch literal 172861 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 eQHqbL?M?lZZ3` literal 0 HcmV?d00001 diff --git a/ch_nilva/pic/SharedScreenshot2.jpg b/ch_nilva/pic/SharedScreenshot2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e9a7b14653e822a3ffc77a0f168cb2e468a81c35 GIT binary patch literal 162775 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 Date: Tue, 30 Mar 2021 18:11:35 +0430 Subject: [PATCH 19/27] Update README.md --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 9e89cd4f..b125d9ad 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,12 @@ # In name of Allah +## Trell Tasks +![alt text](https://github.com/sadrakhamoshi/Django-Schedular/blob/feature_custom_task_admin/ch_nilva/pic/SharedScreenshot.jpg) + +![alt text](https://github.com/sadrakhamoshi/Django-Schedular/blob/feature_custom_task_admin/ch_nilva/pic/SharedScreenshot2.jpg) + +![alt text](https://github.com/sadrakhamoshi/Django-Schedular/blob/feature_custom_task_admin/ch_nilva/pic/SharedScreenshot3.jpg) + ## Introduction We want a simple app to schedule tasks for users. It should be possible to use django admin as interface for this application. From 5e2dc07fd0fe3b632bb8b0360be29338fc7b7d06 Mon Sep 17 00:00:00 2001 From: sadrakhamoshi <45814391+sadrakhamoshi@users.noreply.github.com> Date: Tue, 30 Mar 2021 19:20:10 +0430 Subject: [PATCH 20/27] Update README.md --- README.md | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 76 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b125d9ad..49ffb86e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # In name of Allah -## Trell Tasks +## Trello Tasks ![alt text](https://github.com/sadrakhamoshi/Django-Schedular/blob/feature_custom_task_admin/ch_nilva/pic/SharedScreenshot.jpg) ![alt text](https://github.com/sadrakhamoshi/Django-Schedular/blob/feature_custom_task_admin/ch_nilva/pic/SharedScreenshot2.jpg) @@ -18,6 +18,81 @@ normal users can only see, filter & add to their own tasks. These tasks will hav admin users have the permission to manage users, add to them and delete them. Also they can manage all tasks of users, add task for them and edit their tasks. When created or edited, scheduled tasks should be added or edited. +**note** totaly we have 3 type of users in the whole of the project: +- superuser +- admin +- normal +each type of this users can log in into the admin interface of Django with different policies. + +account & authentication +------------------------ +superusers have all permissions. they can change, create and etc the other users. +admin can create normal user and admin user and change some parts of their information ( e.g admin can not change the user's role into the superuser) +normal users can only see their information and can not edit it. + +Tasks +---------------- +superusers again have all permissions. they can create, edit tasks for theirselves or others. +admins can do same but for normal users or admin users. they can not edit or create new task for superusers. +normals can only see or edit or create tasks for normal users. + +Road Map +=================== + +Authenticationt & Account-admin +--------------- +First of all i started with creating login/ signup APIs for users. For that i used JWT from rest-framework. For users i inherited AbstractUser from django. +i Created 3 kind of API for : +- login +- signup +- refresh token + +After that i tryed to customize the admin pannel for the different users. For that i used admin.ModelAdmin class from django and override some of methods. + +Tasks +--------------- +Next i went for Tasks in schedule app. i built Task model and created Api for geting the list of the Tasks base on the users permission (as it mentioned) + +Celery +--------------- +After task i went into the celery lib and read about and did some resarch. we need that to do some tasks asynchronous. If you want to use celery you need +broker, which i used redis.\ + +celery doc : (https://docs.celeryproject.org/en/stable/index.html) + +Tasks Admin +-------------- +finally i created a customized admin interface for users base on their permissions + +------------------------------------------------- + +Run +================== +1.clone the porject : + +```` +git clone https://github.com/sadrakhamoshi/Django-Schedular.git +```` +---------------------------- + +2.Install pip and python3.7 and virtualenv if you don't have them.\ +pip install link : https://pip.pypa.io/en/stable/installing/ + +```` +pip install virtualenv +```` +------------------------------ +3.create virtual environment for python3.7 base on you os (UNIX/Mac or windows)\ + +venv link : https://docs.python.org/3/library/venv.html + +----------------------------- + +4.## PostgreSQL +Download Link: https://www.enterprisedb.com/downloads/postgres-postgresql-downloads +- Create a Database (Check ch_nilva/ch_nilva/settings.py for database name) +- create a Login/Group Roles (Check ch_nilva/ch_nilva/settings.py for user and password) + **note** that each user must have below fields: - email - username From 797caacd3f96946814ae2aa6067cb9a2508809cf Mon Sep 17 00:00:00 2001 From: sadrakhamoshi <45814391+sadrakhamoshi@users.noreply.github.com> Date: Tue, 30 Mar 2021 19:24:42 +0430 Subject: [PATCH 21/27] Update README.md --- README.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 49ffb86e..479f9fd9 100644 --- a/README.md +++ b/README.md @@ -88,11 +88,20 @@ venv link : https://docs.python.org/3/library/venv.html ----------------------------- -4.## PostgreSQL +4.install postgres\ + Download Link: https://www.enterprisedb.com/downloads/postgres-postgresql-downloads - Create a Database (Check ch_nilva/ch_nilva/settings.py for database name) - create a Login/Group Roles (Check ch_nilva/ch_nilva/settings.py for user and password) +-------------------------------- +5.Install requirements\ +> $ pip install -r requirements.txt + +------------------- +6.Migrate your project +> $ python manage.py migrate + **note** that each user must have below fields: - email - username From 585bdaf4d7785af81168690639bff40d5d449041 Mon Sep 17 00:00:00 2001 From: sadrakhamoshi <45814391+sadrakhamoshi@users.noreply.github.com> Date: Tue, 30 Mar 2021 19:32:15 +0430 Subject: [PATCH 22/27] Update README.md --- README.md | 38 ++++++++++++++++++++++++++++---------- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 479f9fd9..72700816 100644 --- a/README.md +++ b/README.md @@ -68,6 +68,16 @@ finally i created a customized admin interface for users base on their permissio Run ================== + + +### install postgres + +Download Link: https://www.enterprisedb.com/downloads/postgres-postgresql-downloads +- Create a Database (Check ch_nilva/ch_nilva/settings.py for database name) +- create a Login/Group Roles (Check ch_nilva/ch_nilva/settings.py for user and password) + +-------------------------------- + 1.clone the porject : ```` @@ -75,7 +85,7 @@ git clone https://github.com/sadrakhamoshi/Django-Schedular.git ```` ---------------------------- -2.Install pip and python3.7 and virtualenv if you don't have them.\ +2.Install pip and python3.7 and virtualenv if you don't have them\ pip install link : https://pip.pypa.io/en/stable/installing/ ```` @@ -88,20 +98,28 @@ venv link : https://docs.python.org/3/library/venv.html ----------------------------- -4.install postgres\ - -Download Link: https://www.enterprisedb.com/downloads/postgres-postgresql-downloads -- Create a Database (Check ch_nilva/ch_nilva/settings.py for database name) -- create a Login/Group Roles (Check ch_nilva/ch_nilva/settings.py for user and password) - --------------------------------- -5.Install requirements\ +4.Install requirements ( **note** remmeber to active your virtual environment) > $ pip install -r requirements.txt ------------------- -6.Migrate your project +5.Migrate your project > $ python manage.py migrate +-------------------- +6.Create your super user + +> $ python manage.py createsuperuser + +---------------------- +7.Start project +> $ python manage.py runserver + +---------------------- +## Login with your created super http://localhost:8000/api/admin/ + +## check for documentation http://localhost:8000/redoc/ + +-------------------------------------------- **note** that each user must have below fields: - email - username From 90cf4b1c396636c948fb37262c35c9798807c7aa Mon Sep 17 00:00:00 2001 From: sadrakhamoshi Date: Tue, 30 Mar 2021 21:48:50 +0430 Subject: [PATCH 23/27] nothing --- ch_nilva/schedule/urls.py | 3 +-- ch_nilva/schedule/views.py | 6 ------ 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/ch_nilva/schedule/urls.py b/ch_nilva/schedule/urls.py index b58bc807..efe410cc 100644 --- a/ch_nilva/schedule/urls.py +++ b/ch_nilva/schedule/urls.py @@ -1,7 +1,6 @@ from django.urls import path -from .views import TaskList, index +from .views import TaskList urlpatterns = [ path('', TaskList.as_view(), name='all tasks'), - path('index/', index, name='index') ] diff --git a/ch_nilva/schedule/views.py b/ch_nilva/schedule/views.py index c5e391fd..d0e541f2 100644 --- a/ch_nilva/schedule/views.py +++ b/ch_nilva/schedule/views.py @@ -2,8 +2,6 @@ from .serializer import TaskSerializer from rest_framework.generics import ListAPIView from rest_framework.permissions import IsAuthenticated -from django.http.response import HttpResponse -from . import tasks class TaskList(ListAPIView): @@ -20,7 +18,3 @@ def get_queryset(self): else: return query.filter(owner=self.request.user) - -def index(request): - msg = tasks.send_task_mail.delay('sadrakhamoshi7@gmail.com') - return HttpResponse(msg) From 8aa95a788c40c8b18dfef5c9c423e61eb55c45fc Mon Sep 17 00:00:00 2001 From: sadrakhamoshi <45814391+sadrakhamoshi@users.noreply.github.com> Date: Tue, 30 Mar 2021 21:57:18 +0430 Subject: [PATCH 24/27] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 72700816..2b717c8f 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ admin users have the permission to manage users, add to them and delete them. Al - normal each type of this users can log in into the admin interface of Django with different policies. -account & authentication +Account & Authentication ------------------------ superusers have all permissions. they can change, create and etc the other users. admin can create normal user and admin user and change some parts of their information ( e.g admin can not change the user's role into the superuser) @@ -60,9 +60,9 @@ broker, which i used redis.\ celery doc : (https://docs.celeryproject.org/en/stable/index.html) -Tasks Admin +Customize Tasks Admin -------------- -finally i created a customized admin interface for users base on their permissions +Finally I customized the admin panel for managing the tasks and again I used admin.ModelAdmin and override some of its base methods. ------------------------------------------------- From a67b2695478d3d34fa5cc430c0db8407cf3121c0 Mon Sep 17 00:00:00 2001 From: sadrakhamoshi <45814391+sadrakhamoshi@users.noreply.github.com> Date: Tue, 30 Mar 2021 23:58:09 +0430 Subject: [PATCH 25/27] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 2b717c8f..bbcad99e 100644 --- a/README.md +++ b/README.md @@ -32,9 +32,9 @@ normal users can only see their information and can not edit it. Tasks ---------------- -superusers again have all permissions. they can create, edit tasks for theirselves or others. -admins can do same but for normal users or admin users. they can not edit or create new task for superusers. -normals can only see or edit or create tasks for normal users. +- superusers again have all permissions. they can create, edit, delete tasks for theirselves or others\ +- admins can do same as superusers but just for normal users or admin users. they can not edit or create new task for superusers\ +- normals can only see or create or filter tasks for themselves. Road Map =================== From 2e50d585592ca99baf9f56e21680e23f04bb15b1 Mon Sep 17 00:00:00 2001 From: sadrakhamoshi Date: Wed, 31 Mar 2021 00:23:05 +0430 Subject: [PATCH 26/27] nothing2 :)) --- ch_nilva/account/admin.py | 2 ++ ch_nilva/schedule/admin.py | 6 +++--- ch_nilva/schedule/tasks.py | 4 +--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/ch_nilva/account/admin.py b/ch_nilva/account/admin.py index 0a3f207e..ee3a2ff9 100644 --- a/ch_nilva/account/admin.py +++ b/ch_nilva/account/admin.py @@ -25,6 +25,8 @@ def get_link_owner_task(self, obj): def get_fullname(self, obj): return obj.first_name + ' ' + obj.last_name + get_fullname.short_description = 'Full Name' + def has_add_permission(self, request): return request.user.is_superuser or request.user.is_admin diff --git a/ch_nilva/schedule/admin.py b/ch_nilva/schedule/admin.py index 38f26efb..dad86045 100644 --- a/ch_nilva/schedule/admin.py +++ b/ch_nilva/schedule/admin.py @@ -14,6 +14,7 @@ class CustomTaskAdmin(admin.ModelAdmin): list_filter = ('time_to_send', 'owner',) search_fields = ('owner', 'title',) readonly_fields = ('celery_task_id',) + actions = None def get_task_link(self, obj): username = obj.owner.username @@ -78,10 +79,9 @@ def save_model(self, request, obj, form, change): # changed data if change: if 'time_to_send' in form.changed_data: - task_obj = Task.objects.get(id=obj.id) control = Control(app) - control.terminate(task_id=task_obj.celery_task_id) - id = send_task_mail.apply_async(args=[task_obj.owner.email], eta=obj.time_to_send) + control.terminate(task_id=obj.celery_task_id) + id = send_task_mail.apply_async(args=[obj.owner.email], eta=obj.time_to_send) obj.celery_task_id = id super(CustomTaskAdmin, self).save_model(request, obj, form, change) diff --git a/ch_nilva/schedule/tasks.py b/ch_nilva/schedule/tasks.py index 46660fcb..ff72a93c 100644 --- a/ch_nilva/schedule/tasks.py +++ b/ch_nilva/schedule/tasks.py @@ -1,6 +1,4 @@ -from celery import shared_task, current_task -from time import sleep -from celery.contrib import rdb +from celery import shared_task from django.core.mail import send_mail MESSAGE = 'This is from you task schedule Nilva. You scheduled this time for your task. Thanks for using Nilva' From bf75228bd5881c89d63f1343bbd6270b977f0d47 Mon Sep 17 00:00:00 2001 From: sadrakhamoshi <45814391+sadrakhamoshi@users.noreply.github.com> Date: Wed, 31 Mar 2021 00:34:46 +0430 Subject: [PATCH 27/27] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index bbcad99e..b2520f0c 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ # In name of Allah ## Trello Tasks -![alt text](https://github.com/sadrakhamoshi/Django-Schedular/blob/feature_custom_task_admin/ch_nilva/pic/SharedScreenshot.jpg) +![alt text](https://github.com/sadrakhamoshi/Django-Schedular/blob/develope/ch_nilva/pic/SharedScreenshot.jpg) -![alt text](https://github.com/sadrakhamoshi/Django-Schedular/blob/feature_custom_task_admin/ch_nilva/pic/SharedScreenshot2.jpg) +![alt text](https://github.com/sadrakhamoshi/Django-Schedular/blob/develope/ch_nilva/pic/SharedScreenshot2.jpg) -![alt text](https://github.com/sadrakhamoshi/Django-Schedular/blob/feature_custom_task_admin/ch_nilva/pic/SharedScreenshot3.jpg) +![alt text](https://github.com/sadrakhamoshi/Django-Schedular/blob/develope/ch_nilva/pic/SharedScreenshot3.jpg) ## Introduction We want a simple app to schedule tasks for users. It should be possible to use django admin as interface for this application.

@MpUm;QvrzR%|jjE>y+duzMFZNL!78_;R^ly;v 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