diff --git a/app/forms.py b/app/forms.py index 84facd1f2e25e18920754b7cd44a6396e7e1f4fe..54358428322ab389abb06d3b51ba3b265c38faf6 100644 --- a/app/forms.py +++ b/app/forms.py @@ -2,16 +2,20 @@ from django import forms from app.models import Materi, Category, RatingContributor from authentication.models import User +import datetime +def year_choices(): + return[(r,r) for r in range(2000, datetime.date.today().year+1)] class UploadMateriForm(forms.ModelForm): categories = forms.ModelMultipleChoiceField(queryset=Category.objects.all(),widget=forms.CheckboxSelectMultiple(attrs={'style' : 'column-count:2'}),required=True) #categories.widget.attrs["style"] = "column-count:2" + release_year = forms.TypedChoiceField(coerce=int, choices=year_choices, initial=datetime.date.today().year) class Meta: model = Materi - fields = ["title", "author", "publisher", + fields = ["title", "author", "publisher", "release_year", "categories", "descriptions", "cover", "content"] def __init__(self, *args, **kwargs): diff --git a/app/migrations/0021_materi_release_year.py b/app/migrations/0021_materi_release_year.py new file mode 100644 index 0000000000000000000000000000000000000000..8294e44629dc026ddff721b329e610946de3a7d5 --- /dev/null +++ b/app/migrations/0021_materi_release_year.py @@ -0,0 +1,19 @@ +# Generated by Django 3.1 on 2020-10-09 16:13 + +import app.models +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('app', '0020_merge_20201009_2039'), + ] + + operations = [ + migrations.AddField( + model_name='materi', + name='release_year', + field=models.IntegerField(default=app.models.current_year), + ), + ] diff --git a/app/models.py b/app/models.py index aa54208425b22632be3f49ce1214851651e4359d..227eabd559595e96c1b2f60908f726fd589c5773 100644 --- a/app/models.py +++ b/app/models.py @@ -1,4 +1,5 @@ import random +import datetime from django.contrib.postgres import search from django.core.exceptions import ValidationError @@ -24,6 +25,8 @@ def getRandomColor(): color = "%06x" % random.randint(0, 0xFFFFFF) return color +def current_year(): + return datetime.date.today().year class Category(models.Model): name = models.CharField(max_length=20) @@ -56,6 +59,7 @@ class Materi(models.Model): author = models.CharField(max_length=30, default="Penyusun") uploader = models.ForeignKey(User, on_delete=models.SET_NULL, null=True) publisher = models.CharField(max_length=30, default="Penerbit") + release_year = models.IntegerField(default=current_year) pages = models.IntegerField(default=0) descriptions = models.TextField(default="Deskripsi") status = models.CharField(max_length=30, choices=VERIFICATION_STATUS, default=VERIFICATION_STATUS[0][0]) diff --git a/app/templates/app/detail_materi.html b/app/templates/app/detail_materi.html index e15f5f9fa4cda0a0c915adec2200c784710696fb..d614e18272257143e7468f35dfbed77b7110237a 100644 --- a/app/templates/app/detail_materi.html +++ b/app/templates/app/detail_materi.html @@ -127,6 +127,14 @@ <p class="info-content">{{materi_data.publisher}}</p> </dd> </div> + <div class="info" id="1"> + <dl class="col col-4"> + <dt class="info-name">Tahun Terbit</dt> + </dl> + <dd> + <p class="info-content">{{materi_data.release_year}}</p> + </dd> + </div> <div class="info" id="1"> <dl class="col col-4"> <dt class="info-name">Kontributor</dt> diff --git a/app/tests.py b/app/tests.py index cd744649543950569e2d52bd34f189fd461291c5..f27476532a68e8d7671507fc69cc3762329f1bf9 100644 --- a/app/tests.py +++ b/app/tests.py @@ -18,6 +18,7 @@ from django.db.utils import IntegrityError from django.test import Client, RequestFactory, TestCase, TransactionTestCase from pytz import timezone from time import sleep +import datetime as dt from administration.models import VerificationSetting, VerificationReport from administration.utils import id_generator @@ -53,7 +54,7 @@ from .views import ( UploadMateriView, UploadMateriExcelView, ) -from app.forms import SuntingProfilForm +from app.forms import SuntingProfilForm, year_choices from app.utils.fileManagementUtil import get_random_filename, remove_image_exifdata ERROR_403_MESSAGE = "Kamu harus login untuk mengakses halaman ini" @@ -2173,3 +2174,17 @@ class MateriModelTest(TestCase): Like.objects.create(timestamp=datetime.now(), materi=self.materi, session_id="dummysessionid2") self.assertEqual(2, self.materi.like_count) + + +class YearChoicesTest(TestCase): + def test_release_year_contains_the_right_current_year(self): + now = dt.date.today().year + + choices = year_choices() + + self.assertEqual((now, now), choices[-1]) + + def test_min_release_year_is_2000(self): + choices = year_choices() + + self.assertEqual((2000, 2000), choices[0]) \ No newline at end of file diff --git a/digipus/__pycache__/settings.cpython-36.pyc b/digipus/__pycache__/settings.cpython-36.pyc index a2dfadd532b5c69b61e9c0a2768ccc1ee6376edf..0857014007c24fe96681cc07b645936f81fe7ea1 100644 Binary files a/digipus/__pycache__/settings.cpython-36.pyc and b/digipus/__pycache__/settings.cpython-36.pyc differ