Commit 4261cddf authored by Fahmi's avatar Fahmi

commit ke 3

parent 6c547725
from library.models import * from library.models import *
from .models import * from .models import *
from rest_framework import serializers from rest_framework import serializers
from django.contrib.auth import authenticate, get_user_model
class UserLoginSerializer(serializers.Serializer):
username = serializers.CharField()
password = serializers.CharField(write_only=True)
class Meta:
model = CustomUser
fields = ['username', 'password']
def validate(self, data):
username = data.get('username')
password = data.get('password')
if username and password:
user = authenticate(request=self.context.get('request'), username=username, password=password)
if not user:
msg = 'Unable to log in with provided credentials.'
raise serializers.ValidationError(msg, code='authorization')
data['user'] = user
else:
msg = 'Must include "username" and "password".'
raise serializers.ValidationError(msg, code='authorization')
return data
class UserLogoutSerializer(serializers.Serializer):
token = serializers.CharField()
class ChangePasswordSerializer(serializers.Serializer):
old_password = serializers.CharField(required=True)
new_password = serializers.CharField(required=True)
class MemberRegistrationSerializer(serializers.ModelSerializer):
class Meta:
model = CustomUser
fields = ['username', 'email', 'password']
extra_kwargs = {"password": {"write_only": True}}
def create(self, validated_data):
username=validated_data["username"]
email=validated_data["email"]
user = CustomUser(username=username, email=email)
user.set_password(validated_data["password"])
user.save()
return user
class LibrarianRegistrationSerializer(serializers.ModelSerializer):
class Meta:
model = CustomUser
fields = ['username', 'email', 'password', 'is_librarian']
extra_kwargs = {"password": {"write_only": True}}
def create(self, validated_data):
username=validated_data["username"]
email=validated_data["email"]
is_librarian=validated_data["is_librarian"]
user = CustomUser(username=username, email=email, is_librarian=is_librarian)
user.set_password(validated_data["password"])
user.save()
return user
class UserProfileSerializer(serializers.ModelSerializer):
class Meta:
model = CustomUser
fields = ['email', 'first_name', 'last_name']
class CategorySerializer(serializers.ModelSerializer): class CategorySerializer(serializers.ModelSerializer):
class Meta: class Meta:
...@@ -12,12 +80,30 @@ class BookSerializer(serializers.ModelSerializer): ...@@ -12,12 +80,30 @@ class BookSerializer(serializers.ModelSerializer):
model = Book model = Book
fields = '__all__' fields = '__all__'
class BookSearchSerializer(serializers.Serializer):
book_name = serializers.CharField(max_length=255)
class MemberSerializer(serializers.ModelSerializer): class MemberSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = Member model = Member
fields = '__all__' fields = '__all__'
class LibrarianSerializer(serializers.ModelSerializer):
class Meta:
model = Librarian
fields = '__all__'
class BookLoanSerializer(serializers.ModelSerializer): class BookLoanSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = BookLoan model = BookLoan
fields = '__all__' fields = '__all__'
class OverdueLoanSerializer(serializers.ModelSerializer):
class Meta:
model = BookLoan
fields = '__all__'
class NearOutstandingLoanSerializer(serializers.ModelSerializer):
class Meta:
model = BookLoan
fields = '__all__'
\ No newline at end of file
This diff is collapsed.
No preview for this file type
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<div class="card mb-4"> <div class="card mb-4">
<div class="card-header"> <div class="card-header">
<i class="fas fa-table me-1"></i> <i class="fas fa-table me-1"></i>
Member List Librarian List
</div> </div>
<div class="card-body"> <div class="card-body">
<table id="datatablesSimple"> <table id="datatablesSimple">
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
<td>{{ librarian.user.username }}</td> <td>{{ librarian.user.username }}</td>
<td>{{ librarian.user.email }}</td> <td>{{ librarian.user.email }}</td>
<td> <td>
<a class="btn btn-secondary col-2 mx-2" href="{% url 'librarian_edit' pk=librarian.pk %}" role="button">Edit</a> <a class="btn btn-secondary col-2 mx-2" href="{% url 'librarian_edit' id=librarian.id %}" role="button">Edit</a>
<a class="btn btn-danger col-2 mx-2" href="delete/{{librarian.id}}" role="button" onclick="return confirm('Are you sure you want to delete {{book.title}}?')">Delete</a> <a class="btn btn-danger col-2 mx-2" href="delete/{{librarian.id}}" role="button" onclick="return confirm('Are you sure you want to delete {{book.title}}?')">Delete</a>
</td> </td>
</tr> </tr>
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
</tbody> </tbody>
</table> </table>
<div> <div>
<a class="btn btn-primary col-2 mx-3" href="{% url 'librarian_new' %}" role="button">Add a Librarian</a> <a class="btn btn-primary col-1 mx-3" href="{% url 'librarian_new' %}" role="button">Add Librarian</a>
<a class="btn btn-primary col-2 mx-3" href="{% url 'librarian_login_history' %}" role="button">Librarian Login History</a> <a class="btn btn-primary col-2 mx-3" href="{% url 'librarian_login_history' %}" role="button">Librarian Login History</a>
</div> </div>
</div> </div>
......
...@@ -11,59 +11,35 @@ ...@@ -11,59 +11,35 @@
{% csrf_token %} {% csrf_token %}
<div class="mb-3"> <div class="mb-3">
<label for="id_name">Name:</label> <label for="id_name">First Name:</label>
<input type="text" name="name" id="id_name" placeholder="Input Name" class="form-control" required> <input type="text" name="name" id="id_name" placeholder="Input Name" class="form-control" required>
</div> </div>
<div class="mb-3"> <div class="mb-3">
<label for="id_username">Username:</label> <label for="id_lname">Last Name:</label>
<input type="text" name="username" id="id_username" placeholder="Username" class="form-control" required> <input type="text" name="last_name" id="id_lname" placeholder="Input Name" class="form-control" required>
</div> </div>
<div class="mb-3"> <div class="mb-3">
<label for="id_email">Email:</label> <label for="id_address" class="form-label">Address</label>
<input type="email" name="email" id="id_email" placeholder="Email" class="form-control" required> <textarea type="text" name="address" id="id_address" placeholder="Input Address" class="form-control" required></textarea>
</div> </div>
<div class="mb-3"> <div class="mb-3">
<label for="id_password">Password:</label> <label for="id_birth_place" class="form-label">Birth Place</label>
<input type="password" name="password1" id="id_password" placeholder="Password" class="form-control" required> <input type="text" name="birth_place" id="id_birth_place" placeholder="Input Birth Place" class="form-control" required>
</div> </div>
<div class="mb-3"> <div class="mb-3">
<label for="id_password2">Confirm Password:</label> <label for="id_date_birth" class="form-label">Birth Date</label>
<input type="password" name="password2" id="id_password2" placeholder="Confirm Password" class="form-control" required> <input type="date" name="date_birth" id="id_date_birth" placeholder="Input datebirth" class="form-control" required>
</div>
<div class="mb-3">
<label for="id_phone_number" class="form-label">Phone Number</label>
{{form.phone_number}}
</div> </div>
<button type="submit" class="btn btn-primary" role="button">Add Librarian</button> <button type="submit" class="btn btn-primary" role="button">Add Librarian</button>
<a class="btn btn-warning col-2 mx-2" href="{% url 'librarian_list' %}"" role="button">Back</a>
</form> </form>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<!-- <script>
function validateForm() {
var password = document.getElementById("id_password").value;
var confirmPassword = document.getElementById("id_confirm_password").value;
if (password !== confirmPassword) {
alert("Passwords do not match.");
return false;
}
return true;
}
</script> -->
<!-- <div style="text-align: center; margin-top: 50px;">
<h2>Add Librarian</h2>
<form method="post" action="{% url 'librarian_new' %}">
{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="btn btn-primary">Save</button>
</form>
</div> -->
{% endblock content%} {% endblock content%}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment