Fakultas Ilmu Komputer UI

Commit 041f2dc8 authored by insan ramadhan's avatar insan ramadhan
Browse files

Merge branch '1906457480-111' into 'master'

1906457480 111

See merge request !69
parents ba93c560 824d1c2d
Pipeline #59969 passed with stages
in 28 minutes and 2 seconds
# Generated by Django 3.1 on 2020-10-29 13:45
from django.db import migrations, models
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
('app', '0025_review'),
]
operations = [
migrations.CreateModel(
name='SubmitVisitor',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('user_id', models.CharField(max_length=50)),
('email', models.CharField(max_length=50)),
('msg', models.CharField(max_length=100)),
('timestamp', models.DateTimeField(default=django.utils.timezone.now)),
],
),
]
...@@ -197,6 +197,12 @@ class ReqMaterial(models.Model): ...@@ -197,6 +197,12 @@ class ReqMaterial(models.Model):
title = models.CharField(max_length=100) title = models.CharField(max_length=100)
timestamp = models.DateTimeField(default=timezone.now) timestamp = models.DateTimeField(default=timezone.now)
class SubmitVisitor(models.Model):
user_id = models.CharField(max_length=50)
email = models.CharField(max_length=50)
msg = models.CharField(max_length=100)
timestamp = models.DateTimeField(default=timezone.now)
class ViewStatistics(models.Model): class ViewStatistics(models.Model):
materi = models.ForeignKey(Materi, models.SET_NULL, null=True, related_name="baca") materi = models.ForeignKey(Materi, models.SET_NULL, null=True, related_name="baca")
......
...@@ -70,6 +70,8 @@ ...@@ -70,6 +70,8 @@
href="/req-materi">disini</a></p> href="/req-materi">disini</a></p>
<p class="pageTitle">Ingin diskusi lebih mendalam? Silahkan kunjungi <a <p class="pageTitle">Ingin diskusi lebih mendalam? Silahkan kunjungi <a
href="{% url 'forum_home' %}">forum kami</a></p> href="{% url 'forum_home' %}">forum kami</a></p>
<p class="pageTitle">Terima kasih sudah berkunjung, mohon isi buku tamu terlebih dahulu <a
href="/submit-visitor">disini</a> jika kamu sudah terdaftar!</p>
</div> </div>
</div> </div>
</div> </div>
......
{% extends "base.html" %}
{% load static %}
{% block title %}Digipus Home{% endblock %}
{% block header %}
<!DOCTYPE html>
<html lang="en">
<head>
<title>Digipus Home</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" href="{% static 'app/css/katalog_materi.css' %}">
<!-- Bootstrap core CSS -->
<link href="../../static/app/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<!-- Custom styles for this template -->
<link href="../../static/app/css/heroic-features.css" rel="stylesheet">
<!--===============================================================================================-->
<link rel="icon" type="image/png" href="{% static 'images/icons/logo.ico' %}" />
<!--===============================================================================================-->
<!--===============================================================================================-->
<link rel="stylesheet" type="text/css" href="{% static 'fonts/font-awesome-4.7.0/css/font-awesome.min.css' %}">
<!--===============================================================================================-->
<!--===============================================================================================-->
<link rel="stylesheet" type="text/css" href="{% static 'vendor/animate/animate.css' %}">
<!--===============================================================================================-->
<link rel="stylesheet" type="text/css" href="{% static 'vendor/css-hamburgers/hamburgers.min.css' %}">
<!--===============================================================================================-->
<link rel="stylesheet" type="text/css" href="{% static 'vendor/animsition/css/animsition.min.css' %}">
<!--===============================================================================================-->
<link rel="stylesheet" type="text/css" href="{% static 'vendor/select2/select2.min.css' %}">
<!--===============================================================================================-->
<link rel="stylesheet" type="text/css" href="{% static 'vendor/daterangepicker/daterangepicker.css' %}">
<!--===============================================================================================-->
<link rel="stylesheet" type="text/css" href="{% static 'css/styles.css' %}">
<link rel="stylesheet" type="text/css" href="{% static 'css/util.css' %}">
<link rel="stylesheet" type="text/css" href="{% static 'css/main.css' %}">
<!--===============================================================================================-->
{% endblock header %}
{% block content %}
</head>
<body style="background-color: #f8f8f8;">
<!-- Page Content -->
<div class="container">
<header class="jumbotron my-4">
<div class="container">
<div class="row header">
<div class="col">
<h2 class="pageTitle">Hi! {{ user.name }} Selamat datang di halaman buku tamu!</h2>
<input type="hidden" id="user_id" name="user_id" value="{{ user.id}}"/>
<input type="hidden" id="email" name="email" value="{{ user.email}}"/>
{% if user %}
<p class="description">Sampaikan pesan dan kesan kamu terhadap aplikasi ini</p>
{% else %}
<p class="description">Sampaikan pesan dan kesan kamu terhadap aplikasi ini</p>
{% endif %}
<form class="searchBar" >
{% csrf_token %}
<div class="col-6 form-group">
<input type="text" name='search' class="form-control" placeholder="Tulis di sini" id="title" value="" required>
</div>
<button id="btn_req_submit" style="width: auto;padding-left: 10px;padding-right: 10px;" class="btn btn-cari">Submit pesan ke buku tamu</button>
</form>
<p id="msg" style="display: none;margin: 5px">Buku Tamu berhasil ditambahkan</p>
</div>
</div>
</div>
</header>
</div>
<!-- /.container -->
</body>
</html>
<script src="https://kit.fontawesome.com/bc2cedd6b2.js" crossorigin="anonymous"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>
<script type="text/javascript">
var csrftoken = jQuery("[name=csrfmiddlewaretoken]").val();
</script>
<script>
function csrfSafeMethod(method) {
return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}
</script>
<script type="text/javascript">
$('#btn_req_submit').click(function () {
var title = document.getElementById('title');
var msg = document.getElementById('msg');
var user_id = document.getElementById('user_id');
var email = document.getElementById('email');
if (title.value == ''){
return;
}
$.ajaxSetup({
beforeSend: function (xhr, settings) {
if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
xhr.setRequestHeader("X-CSRFToken", csrftoken);
}
}
});
$.ajax({
type: 'POST',
url: "{% url 'submit-visitor' %}",
data: {
'title': title.value,
'user_id': user_id.value,
'email': email.value,
},
success: function(Json) {
/* clear the error message first */
if (Json.success){
swal("Informasi!", Json.msg, "success");
msg.style.display = 'block';
title.value = "";
setTimeout(function(){ $("#msg").fadeOut("slow"); }, 3000);
}else{
swal("Informasi!", Json.msg, "error");
msg.style.display = 'block';
setTimeout(function(){ $("#msg").fadeOut("slow"); }, 3000);
}
},
error: function (xhr, status, errorThrown) {
xhr.status;
swal("Error!", xhr.responseText, "error");
xhr.responseText;
}
});
return false;
});
</script>
{% endblock %}
\ No newline at end of file
...@@ -5,7 +5,7 @@ from app import views ...@@ -5,7 +5,7 @@ from app import views
from app.views import (DashboardKontributorView, ProfilView, from app.views import (DashboardKontributorView, ProfilView,
SuksesLoginAdminView, SuksesLoginKontributorView, DownloadHistoryView, SuksesLoginAdminView, SuksesLoginKontributorView, DownloadHistoryView,
SuntingProfilView, UploadMateriHTML, UploadMateriView, UploadMateriExcelView, PostsView, SuntingProfilView, UploadMateriHTML, UploadMateriView, UploadMateriExcelView, PostsView,
ReqMateriView, KatalogPerKontributorView, MateriFavorite, PasswordChangeViews, password_success) ReqMateriView, KatalogPerKontributorView, MateriFavorite, PasswordChangeViews, password_success, SubmitVisitorView)
urlpatterns = [ urlpatterns = [
...@@ -40,4 +40,5 @@ urlpatterns = [ ...@@ -40,4 +40,5 @@ urlpatterns = [
path("change-password/", PasswordChangeViews.as_view(template_name='change-password.html')), path("change-password/", PasswordChangeViews.as_view(template_name='change-password.html')),
path("password_success/", views.password_success, name="password_success"), path("password_success/", views.password_success, name="password_success"),
path("given-rating/", views.see_given_rating, name="see_given_rating"), path("given-rating/", views.see_given_rating, name="see_given_rating"),
path("submit-visitor/", SubmitVisitorView.as_view(), name="submit-visitor"),
] ]
...@@ -31,6 +31,7 @@ from app.models import ( ...@@ -31,6 +31,7 @@ from app.models import (
Materi, Materi,
ReqMaterial, ReqMaterial,
Rating, RatingContributor, Rating, RatingContributor,
SubmitVisitor
) )
from authentication.models import User from authentication.models import User
from .services import DafterKatalogService, DetailMateriService, LikeDislikeService, MateriFieldValidationHelperService, \ from .services import DafterKatalogService, DetailMateriService, LikeDislikeService, MateriFieldValidationHelperService, \
...@@ -721,3 +722,28 @@ def see_given_rating(request): ...@@ -721,3 +722,28 @@ def see_given_rating(request):
return render(request, 'given-rating.html', return render(request, 'given-rating.html',
context={'rating_list': rating_list, 'order_by_key': order_by_key, 'order_by': order_by}) context={'rating_list': rating_list, 'order_by_key': order_by_key, 'order_by': order_by})
return permission_denied(request, exception=None) return permission_denied(request, exception=None)
class SubmitVisitorView(TemplateView):
template_name = "submit_visitor.html"
def dispatch(self, request, *args, **kwargs):
if request.user.is_authenticated == False:
return HttpResponseRedirect("/login/")
return super(SubmitVisitorView, self).dispatch(request, *args, **kwargs)
def get_context_data(self, **kwargs):
context = super(SubmitVisitorView, self).get_context_data(**kwargs)
return context
def get(self, request, *args, **kwargs):
context = self.get_context_data(**kwargs)
return self.render_to_response(context)
def post(self, request, *args, **kwargs):
title = request.POST.get("title", None)
email = request.POST.get("email", None)
user_id = request.POST.get("user_id", None)
if title is None:
return JsonResponse({"success": False, "msg": "Missing parameter"})
SubmitVisitor(msg=title, user_id=user_id, email=email).save()
return JsonResponse({"success": True, "msg": "Buku tamu berhasil ditambahkan"})
Supports Markdown
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