From bbab3467c432e68c8203fd90831aaf9d7423f788 Mon Sep 17 00:00:00 2001 From: Kevin <vnctkevin@gmail.com> Date: Mon, 6 Mar 2023 20:09:54 +0700 Subject: [PATCH] Update README.md --- authentication/__init__.py | 0 authentication/admin.py | 6 - authentication/apps.py | 6 - authentication/forms.py | 37 --- authentication/migrations/0001_initial.py | 34 --- authentication/migrations/__init__.py | 0 authentication/models.py | 14 - authentication/templates/home.html | 0 authentication/templates/login.html | 48 ---- authentication/templates/registerDosen.html | 37 --- .../templates/registerMahasiswa.html | 38 --- authentication/tests.py | 242 ------------------ authentication/urls.py | 15 -- authentication/views.py | 80 ------ ppi/settings.py | 1 - ppi/urls.py | 3 +- 16 files changed, 1 insertion(+), 560 deletions(-) delete mode 100644 authentication/__init__.py delete mode 100644 authentication/admin.py delete mode 100644 authentication/apps.py delete mode 100644 authentication/forms.py delete mode 100644 authentication/migrations/0001_initial.py delete mode 100644 authentication/migrations/__init__.py delete mode 100644 authentication/models.py delete mode 100644 authentication/templates/home.html delete mode 100644 authentication/templates/login.html delete mode 100644 authentication/templates/registerDosen.html delete mode 100644 authentication/templates/registerMahasiswa.html delete mode 100644 authentication/tests.py delete mode 100644 authentication/urls.py delete mode 100644 authentication/views.py diff --git a/authentication/__init__.py b/authentication/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/authentication/admin.py b/authentication/admin.py deleted file mode 100644 index 1d04663..0000000 --- a/authentication/admin.py +++ /dev/null @@ -1,6 +0,0 @@ -from django.contrib import admin -from .models import mahasiswa, dosen - -admin.site.register(mahasiswa) -admin.site.register(dosen) -# Register your models here. diff --git a/authentication/apps.py b/authentication/apps.py deleted file mode 100644 index 8bab8df..0000000 --- a/authentication/apps.py +++ /dev/null @@ -1,6 +0,0 @@ -from django.apps import AppConfig - - -class AuthenticationConfig(AppConfig): - default_auto_field = 'django.db.models.BigAutoField' - name = 'authentication' diff --git a/authentication/forms.py b/authentication/forms.py deleted file mode 100644 index cccfe8b..0000000 --- a/authentication/forms.py +++ /dev/null @@ -1,37 +0,0 @@ -from django.contrib.auth.forms import UserCreationForm -from django.forms import ModelForm -from .models import mahasiswa, dosen -from django.contrib.auth.models import User - -class mahasiswaRegForm(ModelForm): - class Meta: - model = mahasiswa - fields = ['npm', 'prodi'] - error_messages = { - 'npm': { - 'unique': ("NPM sudah terdaftar. Silahkan coba lagi."), - }, - } - -class dosenRegForm(ModelForm): - class Meta: - model = dosen - fields = ['nip'] - error_messages = { - 'nip': { - 'unique': ("NIP sudah terdaftar. Silahkan coba lagi."), - }, - } - -class userRegForm(UserCreationForm): - error_messages = { - 'password_mismatch': 'Password dan konfirmasi password tidak sesuai. Silahkan coba lagi.' - } - class Meta: - model = User - fields = ['first_name', 'last_name', 'email', 'username', 'password1', 'password2'] - error_messages = { - 'username': { - 'unique': ("Username sudah terdaftar. Silahkan coba lagi."), - }, - } diff --git a/authentication/migrations/0001_initial.py b/authentication/migrations/0001_initial.py deleted file mode 100644 index 19a17c8..0000000 --- a/authentication/migrations/0001_initial.py +++ /dev/null @@ -1,34 +0,0 @@ -# Generated by Django 3.2.8 on 2023-03-03 11:51 - -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='mahasiswa', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('npm', models.CharField(max_length=100, unique=True)), - ('prodi', models.CharField(max_length=100)), - ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ], - ), - migrations.CreateModel( - name='dosen', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('nip', models.CharField(max_length=100, unique=True)), - ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ], - ), - ] diff --git a/authentication/migrations/__init__.py b/authentication/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/authentication/models.py b/authentication/models.py deleted file mode 100644 index 1119a5f..0000000 --- a/authentication/models.py +++ /dev/null @@ -1,14 +0,0 @@ -from django.db import models -from django.contrib.auth.models import User - -class mahasiswa(models.Model): - user = models.OneToOneField(User, on_delete=models.CASCADE) - npm = models.CharField(max_length=100, unique=True) - prodi = models.CharField(max_length=100) - -class dosen(models.Model): - user = models.OneToOneField(User, on_delete=models.CASCADE) - nip = models.CharField(max_length=100, unique=True) - - - diff --git a/authentication/templates/home.html b/authentication/templates/home.html deleted file mode 100644 index e69de29..0000000 diff --git a/authentication/templates/login.html b/authentication/templates/login.html deleted file mode 100644 index ac9487e..0000000 --- a/authentication/templates/login.html +++ /dev/null @@ -1,48 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> - -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <title>Login</title> -</head> - -<body> - -<div class = "login"> - - <h1>Login</h1> - - <form method="POST"> - {% csrf_token %} - <table> - <tr> - <td>Username: </td> - <td><input type="text" name="username" placeholder="Username" class="form-control"></td> - </tr> - - <tr> - <td>Password: </td> - <td><input type="password" name="password" placeholder="Password" class="form-control"></td> - </tr> - - <tr> - <td></td> - <td><input class="btn login_btn" type="submit" value="Login"></td> - </tr> - </table> - </form> - - {% if messages %} - <ul> - {% for message in messages %} - <li>{{ message }}</li> - {% endfor %} - </ul> - {% endif %} - - Belum mempunyai akun? <a href="{% url 'main:registerMahasiswa' %}">Buat Akun</a> - -</div> -</body> -</html> \ No newline at end of file diff --git a/authentication/templates/registerDosen.html b/authentication/templates/registerDosen.html deleted file mode 100644 index 5b9a050..0000000 --- a/authentication/templates/registerDosen.html +++ /dev/null @@ -1,37 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> - - <head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <title>Registrasi Akun</title> -</head> - -<body> -<div class = "login"> - - <h1>Formulir Registrasi</h1> - - <form method="POST" action="/register/dosen/submit"> - {% csrf_token %} - <table> - {{ form.as_table }} - {{ form2.as_table }} - <tr> - <td></td> - <td><input type="submit" name="submit" value="Daftar"/></td> - </tr> - </table> - </form> - - {% if messages %} - <ul> - {% for message in messages %} - <li>{{ message }}</li> - {% endfor %} - </ul> - {% endif %} - -</div> -</body> -</html> \ No newline at end of file diff --git a/authentication/templates/registerMahasiswa.html b/authentication/templates/registerMahasiswa.html deleted file mode 100644 index 3dc0a85..0000000 --- a/authentication/templates/registerMahasiswa.html +++ /dev/null @@ -1,38 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> - - <head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <title>Registrasi Akun</title> -</head> -<body> - -<div class = "login"> - - <h1>Formulir Registrasi</h1> - - <form method="POST" action="/register/mahasiswa/submit"> - {% csrf_token %} - <table> - {{ form.as_table }} - {{ form2.as_table }} - <tr> - <td></td> - <td><input type="submit" name="submit" value="Daftar"/></td> - </tr> - </table> - </form> - - {% if messages %} - <ul> - {% for message in messages %} - <li>{{ message }}</li> - {% endfor %} - </ul> - {% endif %} - -</div> - -</body> -</html> \ No newline at end of file diff --git a/authentication/tests.py b/authentication/tests.py deleted file mode 100644 index b1dcae2..0000000 --- a/authentication/tests.py +++ /dev/null @@ -1,242 +0,0 @@ -from django.test import TestCase, Client -from django.test import TestCase -from django.contrib.messages import get_messages -from .models import User, mahasiswa, dosen - -class testView(TestCase): - def setUp(self): - user_mahasiswa = User.objects.create_user( - username="mahasiswasatu", - email="mahasiswa@email.com", - password="password99", - first_name="maha", - last_name="siswa" - ) - - mahasiswa.objects.create(user=user_mahasiswa, npm="2006462840",prodi="Ilmu Komputer") - - user_dosen = User.objects.create_user( - username="dosensatu", - email="dosen@email.com", - password="password99", - first_name="dosen", - last_name="dosen" - ) - - dosen.objects.create(user=user_dosen, nip="200648232") - - self.c = Client() - - def test_register_mahasiswa_view_load(self): - response = self.c.get('/register/mahasiswa') - self.assertEqual(response.status_code, 200) - self.assertTemplateUsed(response, 'registerMahasiswa.html') - - def test_register_dosen_view_load(self): - response = self.c.get('/register/dosen') - self.assertEqual(response.status_code, 200) - self.assertTemplateUsed(response, 'registerDosen.html') - - def test_register_user_mahasiswa(self): - response = self.c.post('/register/mahasiswa/submit', data={ - "username": "mahasiswadua", - "first_name": "mahasiswa", - "last_name": "dua", - "email": "mahasiswadua@test.com", - "password1": "password9909", - "password2": "password9909", - "npm": "2006462841", - "prodi": "Ilmu Komputer" - }) - - self.assertEqual(response.status_code, 302) - self.assertRedirects(response, '/login') - - def test_register_user_dosen(self): - response = self.c.post('/register/dosen/submit', data={ - "username": "dosendua", - "first_name": "dosen", - "last_name": "dua", - "email": "dosendua@test.com", - "password1": "password9909", - "password2": "password9909", - "nip": "20063623622", - }) - - self.assertEqual(response.status_code, 302) - self.assertRedirects(response, '/login') - - def test_register_user_password_didnt_match(self): - response = self.c.post('/register/mahasiswa/submit', data={ - "username": "mahasiswapass", - "first_name": "mahasiswa", - "last_name": "mahasiswa", - "email": "mahasiswa@test.com", - "password1": "password990", - "password2": "password990909", - "npm": "2006462842", - "prodi": "Ilmu Komputer", - }) - - messages = [m.message for m in get_messages(response.wsgi_request)] - self.assertEqual(messages[0], "Password dan konfirmasi password tidak sesuai. Silahkan coba lagi.") - - def test_register_mahasiswa_username_already_exists(self): - response = self.c.post('/register/mahasiswa/submit', data={ - "username": "mahasiswasatu", - "first_name": "mahasiswa", - "last_name": "tiga", - "email": "mahasiswatiga@test.com", - "password1": "password9909", - "password2": "password9909", - "npm": "2006462843", - "prodi": "Ilmu Komputer", - }) - - messages = [m.message for m in get_messages(response.wsgi_request)] - self.assertEqual(messages[0], "Username sudah terdaftar. Silahkan coba lagi.") - - def test_register_mahasiswa_npm_already_exists(self): - response = self.c.post('/register/mahasiswa/submit', data={ - "username": "mahasiswaempat", - "first_name": "mahasiswa", - "last_name": "tiga", - "email": "mahasiswatiga@test.com", - "password1": "password9909", - "password2": "password9909", - "npm": "2006462840", - "prodi": "Ilmu Komputer", - }) - - messages = [m.message for m in get_messages(response.wsgi_request)] - self.assertEqual(messages[0], "NPM sudah terdaftar. Silahkan coba lagi.") - - - def test_register_dosen_nip_already_exists(self): - response = self.c.post('/register/dosen/submit', data={ - "username": "dosenempat", - "first_name": "dosen", - "last_name": "tiga", - "email": "dosentiga@test.com", - "password1": "password9909", - "password2": "password9909", - "nip": "200648232", - }) - - messages = [m.message for m in get_messages(response.wsgi_request)] - self.assertEqual(messages[0], "NIP sudah terdaftar. Silahkan coba lagi.") - - def test_login_mahasiswa_view_success(self): - response = self.c.post('/login', data={"username":"mahasiswasatu", "password":"password99"}) - - self.assertEqual(response.status_code, 302) - self.assertRedirects(response, '/home') - - def test_login_dosen_view_success(self): - response = self.c.post('/login', data={"username":"dosensatu", "password":"password99"}) - - self.assertEqual(response.status_code, 302) - self.assertRedirects(response, '/home') - - def test_login_view_failed(self): - response = self.c.post('/login', data={"username":"dosensatu", "password":"password9922"}) - - messages = [m.message for m in get_messages(response.wsgi_request)] - self.assertEqual(messages[0], "Username atau password tidak sesuai. Silahkan coba lagi.") - - def test_logout_view_success(self): - self.c.post('/login', data={"username":"mahasiswasatu", "password":"password99"}) - response = self.c.get('/logout') - - self.assertEqual(response.status_code, 302) - self.assertRedirects(response, '/login') - - -class ModelsTest(TestCase): - def setUp(self): - user_mahasiswa = User.objects.create_user( - username="mahasiswa", - email="mahasiswa@email.com", - password="password99", - first_name="maha", - last_name="siswa" - ) - - mahasiswa.objects.create(user=user_mahasiswa, npm="2006462844",prodi="Ilmu Komputer") - - user_dosen = User.objects.create_user( - username="dosen", - email="dosen@email.com", - password="password91", - first_name="dosen", - last_name="dosen" - ) - - dosen.objects.create(user=user_dosen, nip="200648232") - - def test_model_user(self): - - user_mahasiswa_data = User.objects.get(username="mahasiswa") - self.assertEqual(user_mahasiswa_data.username, "mahasiswa") - self.assertEqual(user_mahasiswa_data.email, "mahasiswa@email.com") - self.assertEqual(user_mahasiswa_data.get_full_name(), "maha siswa") - - - user_dosen_data = User.objects.get(username="dosen") - self.assertEqual(user_dosen_data.username, "dosen") - self.assertEqual(user_dosen_data.email, "dosen@email.com") - self.assertEqual(user_dosen_data.get_full_name(), "dosen dosen") - - def test_model_mahasiswa(self): - user_mahasiswa_data = User.objects.get(username="mahasiswa") - - mahasiswa_data = mahasiswa.objects.get(user=user_mahasiswa_data) - self.assertEqual(mahasiswa_data.npm, "2006462844") - self.assertEqual(mahasiswa_data.prodi, "Ilmu Komputer") - - def test_model_dosen(self): - user_dosen_data = User.objects.get(username="dosen") - - dosen_data = dosen.objects.get(user=user_dosen_data) - self.assertEqual(dosen_data.nip, "200648232") - -class LoginLogoutTest(TestCase): - def setUp(self): - user_mahasiswa = User.objects.create_user( - username="mahasiswalog", - email="mahasiswa@email.com", - password="password99", - first_name="maha", - last_name="siswa" - ) - - mahasiswa.objects.create(user=user_mahasiswa, npm="2006462845",prodi="Ilmu Komputer") - - user_dosen = User.objects.create_user( - username="dosenlog", - email="dosen@email.com", - password="password99", - first_name="dosen", - last_name="dosen" - ) - - dosen.objects.create(user=user_dosen, nip="200648232") - - self.c = Client() - - def test_login_mahasiswa(self): - logged_in = self.c.login(username='mahasiswalog', password='password99') - self.assertEqual(logged_in, True) - - def test_login_dosen(self): - logged_in = self.c.login(username='dosenlog', password='password99') - self.assertEqual(logged_in, True) - - def test_login_username_password_didnt_match(self): - logged_in = self.c.login(username='mahasiswalog', password='password99999') - self.assertEqual(logged_in, False) - - def test_logout(self): - logged_in = self.c.login(username='mahasiswalog', password='password99999') - self.c.logout() - self.assertEqual(logged_in, False) \ No newline at end of file diff --git a/authentication/urls.py b/authentication/urls.py deleted file mode 100644 index 4da243e..0000000 --- a/authentication/urls.py +++ /dev/null @@ -1,15 +0,0 @@ -from django.urls import path - -from .views import login_user, registerMahasiswa, registerDosen, home, submitRegMahasiswa, submitRegDosen, logout_user - -app_name = 'main' - -urlpatterns = [ - path('register/mahasiswa', registerMahasiswa, name='registerMahasiswa'), - path('register/mahasiswa/submit', submitRegMahasiswa, name='subRegisterMahasiswa'), - path('register/dosen', registerDosen, name='registerDosen'), - path('register/dosen/submit', submitRegDosen, name='submitRegisterDosen'), - path('home', home, name='home'), - path('login', login_user, name='login'), - path('logout', logout_user, name='logout'), -] \ No newline at end of file diff --git a/authentication/views.py b/authentication/views.py deleted file mode 100644 index 36ca6bb..0000000 --- a/authentication/views.py +++ /dev/null @@ -1,80 +0,0 @@ -from django.shortcuts import render -from django.shortcuts import redirect -from .forms import mahasiswaRegForm, userRegForm, dosenRegForm -from django.contrib import messages -from django.contrib.auth import authenticate, login, logout -from django.contrib.auth.decorators import login_required - -def registerMahasiswa(request): - form = userRegForm() - form2 = mahasiswaRegForm() - context = {'form':form, 'form2':form2} - return render(request, 'registerMahasiswa.html', context) - -def submitRegMahasiswa(request): - if request.method == "POST": - form = userRegForm(request.POST) - form2 = mahasiswaRegForm(request.POST) - if form.is_valid() and form2.is_valid(): - user = form.save() - form2.instance.user = user - form2.save() - messages.success(request, 'Akun telah berhasil dibuat.') - return redirect('main:login') - else: - for field, errors in form2.errors.items(): - for error in errors: - messages.error(request, error) - for field, errors in form.errors.items(): - for error in errors: - messages.error(request, error) - return redirect('main:registerMahasiswa') - -def registerDosen(request): - form = userRegForm() - form2 = dosenRegForm() - context = {'form':form, 'form2':form2} - return render(request, 'registerDosen.html', context) - -def submitRegDosen(request): - if request.method == "POST": - form = userRegForm(request.POST) - form2 = dosenRegForm(request.POST) - for error in form.errors: - messages.error(request, form.errors[error]) - if form.is_valid() and form2.is_valid(): - user = form.save() - form2.instance.user = user - form2.save() - messages.success(request, 'Akun telah berhasil dibuat!') - return redirect('main:login') - else: - for field, errors in form2.errors.items(): - for error in errors: - messages.error(request, error) - for field, errors in form.errors.items(): - for error in errors: - messages.error(request, error) - return redirect('main:registerDosen') - -def login_user(request): - if request.method == 'POST': - username = request.POST.get('username') - password = request.POST.get('password') - user = authenticate(request, username=username, password=password) - if user is not None: - login(request, user) - return redirect('main:home') - else: - messages.error(request, 'Username atau password tidak sesuai. Silahkan coba lagi.') - context = {} - return render(request, 'login.html', context) - -def logout_user(request): - logout(request) - return redirect('main:login') - -@login_required(login_url='/login/') -def home(request): - return render(request, "home.html") - diff --git a/ppi/settings.py b/ppi/settings.py index b92dd01..398041a 100644 --- a/ppi/settings.py +++ b/ppi/settings.py @@ -40,7 +40,6 @@ INSTALLED_APPS = [ 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', - 'authentication', ] MIDDLEWARE = [ diff --git a/ppi/urls.py b/ppi/urls.py index 72ed00d..0def879 100644 --- a/ppi/urls.py +++ b/ppi/urls.py @@ -14,9 +14,8 @@ Including another URLconf 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ from django.contrib import admin -from django.urls import path, include +from django.urls import path urlpatterns = [ path('admin/', admin.site.urls), - path("", include('authentication.urls')), ] -- GitLab