From c2fb77816aefeab418675c28b9cab6448d337b87 Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Thu, 14 Jan 2021 21:26:28 +0200 Subject: [PATCH 1/7] Order SignupForms by start_time --- webapp/views.py | 1 + 1 file changed, 1 insertion(+) diff --git a/webapp/views.py b/webapp/views.py index 52cfda7..3331d3e 100644 --- a/webapp/views.py +++ b/webapp/views.py @@ -87,6 +87,7 @@ class EventViewSet(ModelViewSet): class SignupFormViewSet(ModelViewSet): queryset = SignupForm.objects.all() + ordering = ["start_time"] serializer_class = SignupFormSerializer permission_classes = [IsAuthenticatedOrReadOnly] From de1ba7c9f2423af63eb7390f117a39ac65bd193a Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Thu, 14 Jan 2021 22:05:04 +0200 Subject: [PATCH 2/7] Add soft delete functionality for Event, SignupForm, Feed & JobAd --- webapp/migrations/0075_auto_20210114_2155.py | 33 +++++++++++++ webapp/models.py | 4 ++ webapp/tests/test_event.py | 6 ++- webapp/views.py | 50 +++++++++++++++++--- 4 files changed, 84 insertions(+), 9 deletions(-) create mode 100644 webapp/migrations/0075_auto_20210114_2155.py diff --git a/webapp/migrations/0075_auto_20210114_2155.py b/webapp/migrations/0075_auto_20210114_2155.py new file mode 100644 index 0000000..ce68abd --- /dev/null +++ b/webapp/migrations/0075_auto_20210114_2155.py @@ -0,0 +1,33 @@ +# Generated by Django 2.1.5 on 2021-01-14 19:55 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('webapp', '0074_signup_deleted'), + ] + + operations = [ + migrations.AddField( + model_name='event', + name='deleted', + field=models.BooleanField(default=False), + ), + migrations.AddField( + model_name='feed', + name='deleted', + field=models.BooleanField(default=False), + ), + migrations.AddField( + model_name='jobad', + name='deleted', + field=models.BooleanField(default=False), + ), + migrations.AddField( + model_name='signupform', + name='deleted', + field=models.BooleanField(default=False), + ), + ] diff --git a/webapp/models.py b/webapp/models.py index 36be46f..f7db2a4 100644 --- a/webapp/models.py +++ b/webapp/models.py @@ -55,6 +55,7 @@ class Feed(BaseFeed): publish_time = models.DateTimeField(default=timezone.now) autohide = models.DateTimeField(default=month_from_now) autohide_enabled = models.BooleanField(default=False) + deleted = models.BooleanField(default=False) def __str__(self): return _('Feed: {}').format(self.title) @@ -72,6 +73,7 @@ class Event(BaseFeed): signupForm = models.ManyToManyField( 'SignupForm', blank=True, related_name="event") location = models.CharField(max_length=255, blank=True) + deleted = models.BooleanField(default=False) def __str__(self): return _('Event: {}').format(self.title) @@ -109,6 +111,7 @@ class SignupForm(models.Model): visible = models.BooleanField(default=True) quota = models.PositiveIntegerField(blank=True, null=True) email_content = models.TextField(blank=True) + deleted = models.BooleanField(default=False) def __str__(self): return _('#{} {}').format(self.id, self.title) @@ -185,6 +188,7 @@ class JobAd(models.Model): created_at = models.DateTimeField(default=timezone.now) autohide_at = models.DateTimeField(default=month_from_now) autohide_enabled = models.BooleanField(default=False) + deleted = models.BooleanField(default=False) auditlog.register(Tag) diff --git a/webapp/tests/test_event.py b/webapp/tests/test_event.py index d00cb98..f3b4f9d 100644 --- a/webapp/tests/test_event.py +++ b/webapp/tests/test_event.py @@ -171,5 +171,7 @@ class EventTestCase(APITestCase): # Authenticate self.client.force_authenticate(user=self.authClient) response = self.client.delete(f"{URL}{self.testEventId}/") - self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) - self.assertEqual(Event.objects.count(), 3) + # Soft delete + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(Event.objects.count(), 4) + self.assertEqual(Event.objects.get(id=self.testEventId).deleted, True) diff --git a/webapp/views.py b/webapp/views.py index 3331d3e..97b57c6 100644 --- a/webapp/views.py +++ b/webapp/views.py @@ -39,7 +39,7 @@ class RootView(routers.APIRootView): class EventViewSet(ModelViewSet): - queryset = Event.objects.all() + queryset = Event.objects.filter(deleted=False) ordering = ["start_time"] serializer_class = EventSerializer permission_classes = [IsAuthenticatedOrReadOnly] @@ -54,16 +54,16 @@ class EventViewSet(ModelViewSet): self.request.method == 'POST' or \ self.request.method == 'PUT': return Event.objects.all().prefetch_related( - Prefetch('signupForm', queryset=SignupForm.objects.all(), to_attr='filtered_signup_forms') + Prefetch('signupForm', queryset=SignupForm.objects.filter(deleted=False), to_attr='filtered_signup_forms') ) since = self.request.query_params.get('since', None) if since: return Event.objects.filter(visible=True, end_time__gt=since).order_by('start_time').prefetch_related( - Prefetch('signupForm', queryset=SignupForm.objects.filter(visible=True), to_attr='filtered_signup_forms') + Prefetch('signupForm', queryset=SignupForm.objects.filter(deleted=False, visible=True), to_attr='filtered_signup_forms') ) return Event.objects.filter(visible=True, end_time__gt=timezone.now()).order_by('start_time').prefetch_related( - Prefetch('signupForm', queryset=SignupForm.objects.filter(visible=True), to_attr='filtered_signup_forms') + Prefetch('signupForm', queryset=SignupForm.objects.filter(deleted=False, visible=True), to_attr='filtered_signup_forms') ) def create(self, request, *args, **kwargs): @@ -84,9 +84,18 @@ class EventViewSet(ModelViewSet): }) return super().update(request, *args, **kwargs) + def destroy(self, request, pk=None, *args, **kwargs): + try: + event = self.get_object() + event.deleted = True + event.save() + return JsonResponse(status=200, data={"message": "OK"}) + except ObjectDoesNotExist: + return JsonResponse(status=404, data={"error": f"Event {pk} not found"}) + class SignupFormViewSet(ModelViewSet): - queryset = SignupForm.objects.all() + queryset = SignupForm.objects.filter(deleted=False) ordering = ["start_time"] serializer_class = SignupFormSerializer permission_classes = [IsAuthenticatedOrReadOnly] @@ -106,6 +115,15 @@ class SignupFormViewSet(ModelViewSet): return SignupForm.objects.all().order_by('start_time') return SignupForm.objects.filter(visible=True, end_time__gt=timezone.now()).order_by('start_time') + def destroy(self, request, pk=None, *args, **kwargs): + try: + form = self.get_object() + form.deleted = True + form.save() + return JsonResponse(status=200, data={"message": "OK"}) + except ObjectDoesNotExist: + return JsonResponse(status=404, data={"error": f"SignupForm {pk} not found"}) + @action(detail=True, methods=['post'], permission_classes=[IsAuthenticated]) def sendemail(self, request, pk=None, *args, **kwargs): subject = request.data["subject"] @@ -203,7 +221,7 @@ class SavedQuestionsViewSet(ModelViewSet): class FeedViewSet(ModelViewSet): - queryset = Feed.objects.all() + queryset = Feed.objects.filter(deleted=False) serializer_class = FeedSerializer permission_classes = [IsAuthenticatedOrReadOnly] # filter_backends = (filters.DjangoFilterBackend, SearchFilter, OrderingFilter) @@ -227,6 +245,15 @@ class FeedViewSet(ModelViewSet): return Feed.objects.filter(id__in=result_ids) + def destroy(self, request, pk=None, *args, **kwargs): + try: + post = self.get_object() + post.deleted = True + post.save() + return JsonResponse(status=200, data={"message": "OK"}) + except ObjectDoesNotExist: + return JsonResponse(status=404, data={"error": f"Post {pk} not found"}) + class TagsViewSet(ReadOnlyModelViewSet): queryset = Tag.objects.all() @@ -235,7 +262,7 @@ class TagsViewSet(ReadOnlyModelViewSet): class JobAdViewSet(ModelViewSet): - queryset = JobAd.objects.all() + queryset = JobAd.objects.filter(deleted=False) serializer_class = JobAdSerializer permission_classes = [IsAuthenticatedOrReadOnly] @@ -244,6 +271,15 @@ class JobAdViewSet(ModelViewSet): return JobAd.objects.all() return JobAd.objects.filter(visible=True, autohide_at__gt=timezone.now()) + def destroy(self, request, pk=None, *args, **kwargs): + try: + ad = self.get_object() + ad.deleted = True + ad.save() + return JsonResponse(status=200, data={"message": "OK"}) + except ObjectDoesNotExist: + return JsonResponse(status=404, data={"error": f"Job Ad {pk} not found"}) + @require_http_methods(["GET"]) def about_view(request, *args, **kwargs): From 27f9c79cf30028ef47164a96e20697fe18d349f0 Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Thu, 14 Jan 2021 22:12:34 +0200 Subject: [PATCH 3/7] Test Feed delete --- webapp/tests/test_feed.py | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/webapp/tests/test_feed.py b/webapp/tests/test_feed.py index c329e22..82490ca 100644 --- a/webapp/tests/test_feed.py +++ b/webapp/tests/test_feed.py @@ -6,6 +6,8 @@ from webapp.models import Feed from webapp.serializers import FeedSerializer from webapp.tests.tag_fixture import tagBuilder +URL = "/api/feed/" + class FeedTestCase(APITestCase): @@ -19,11 +21,13 @@ class FeedTestCase(APITestCase): self.assertEqual(Feed.objects.count(), 1) self.assertEqual(Feed.objects.all()[0].tags.count(), 2) + self.feedId = feed.id + username, password = "test_admin", "password123" self.authClient = User.objects.create_superuser(username, "myemail@test.com", password) def test_get_feed(self): - response = self.client.get("/api/feed/", format="json") + response = self.client.get(URL, format="json") self.assertTrue(status.is_success(response.status_code)) feeds = Feed.objects.all() @@ -47,15 +51,28 @@ class FeedTestCase(APITestCase): "content_en": "lorem ipsum" } # Try post without authentication - response = self.client.post("/api/feed/", data, format="json") + response = self.client.post(URL, data, format="json") self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) self.assertEqual(Feed.objects.count(), 1) # Authenticate self.client.force_authenticate(user=self.authClient) - response = self.client.post("/api/feed/", data, format="json") + response = self.client.post(URL, data, format="json") # Return success and check object was created self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertEqual(Feed.objects.count(), 2) created = Feed.objects.get(title_fi="testtitle") self.assertEqual(created.tags.count(), 2) + + def test_post_delete(self): + response = self.client.delete(f"{URL}{self.feedId}/",) + self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) + self.assertEqual(Feed.objects.count(), 1) + + # Authenticate + self.client.force_authenticate(user=self.authClient) + response = self.client.delete(f"{URL}{self.feedId}/") + # Soft delete + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(Feed.objects.count(), 1) + self.assertEqual(Feed.objects.get(id=self.feedId).deleted, True) From 90342011f5926f6694ab0e8a4e7d22c4e2bfeeb0 Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Thu, 14 Jan 2021 22:26:51 +0200 Subject: [PATCH 4/7] Add deleted prefix for deleted instances --- locale/en/LC_MESSAGES/django.mo | Bin 16448 -> 16372 bytes locale/en/LC_MESSAGES/django.po | 189 ++++++++++++-------------------- locale/fi/LC_MESSAGES/django.mo | Bin 16687 -> 16104 bytes locale/fi/LC_MESSAGES/django.po | 187 ++++++++++++------------------- webapp/models.py | 16 ++- 5 files changed, 156 insertions(+), 236 deletions(-) diff --git a/locale/en/LC_MESSAGES/django.mo b/locale/en/LC_MESSAGES/django.mo index 9fd5df8c23d252bdfce5587a2608db91775ab9a9..060b64f02bc26635190e6f656e2e88bc0d276215 100644 GIT binary patch delta 4538 zcmZA5eQ;I98OQNWLP8?R%_}dt1QHB+Aqj?DAV@+$3K9|oWB^IzkCvARHBc4k5k7_$Uh zF$Qyc8xxHIYbi!hpNO$I8S`;AM&VQ5dB;3YA%TW~GlTZViipuO9bd<^k6ts5BQ8%tarFu2$ z!k17TZ^CfggOT_eY9K)@#}3p3eSYtJA5=XJ^_;<|fec6WU*aeKIx)pIJd8}j)S}v- zMRnk!GO`ix#vP~uA4d)73~E5j-zH&6p~ zx@;jl!`pZlO4=EeAPtj1w@6D#p?PgH6mc}cbQKGaADqn2i@bp~o?3sISQ0@dLf)OTP#s-L~66z|6f zdD zN8PvBx(qd-6-e^TYIHQiS1It%9O6#~eu_$AM7H;vkdCU4vGpp{10TmotVa#xSyU!o zLM>&Zbq_{RZ?)$Sqb6`PoBV56o}^(W-ojd(p5v`$E2^Uo)TaCh^YxktDeXpm zsM2!1ADLX_pP9uUx-@mT2)CgI96Q9zOwthYuU(r;gJzI};Wz^MXGZboUpNnMVRfGO zD>ysfd*H|dW0uiA9;5J0jK+f)gGW#^KY@DAY2;S(3F`V7XQ+2U0&1oys9l_eu{aDh zvoh4?sX$#8tDaV7iv@X z8|GyqfbrDJPy?KbJ#j8-pbJpDeg!fHvlcb*7Sw<{P}iS8rTi>vKp$f-z5kz4@X_!k zYVB^LZj2^h2^fc3f`O=x^H6(a6lyb-payaumg7v+12@|9TTx588}*$1sDZR&0?#+^ z+Y^`6K>a%ESMZi?PYHM(W}-UEN4{027&YK()PUxr22_LkF-h!`fdpByS z!bgyQ24jl&2~$cIViMM(zTNexwQoSBZaXdtBZa8z(u%#A6rwiO1k{8Uq3&CXdT<>o z6Hi%pq9*V`G5OaB&(k2UqCP0sF%e@%c@OT7s^_8hz!=nwD^P1a2bH03+xEv$6RO8# zT!UJYM%2Leqc-__4h3~^8B_2tsE%%-)-?8B&v;a-lW+l++WHo(q<##Q^5oIp1Nxyp z*}2#UCt_cmYwJHiP1spWL8*Pkx)qh0w@_=}imBL%O8H-{|3S?xvBb+r7HT2^RC@`k zpJ}KE%|R{2JX9uYFkA2ckL(4TaS|tX;S+cRHKWC)US^h}Qu;J%CNH4QH=&kf2kL=A z)Bq0QVEhnu-&fXePy>n>qs`9x$5GG>3sIY-0yA(K_QwsFhRwEq+}8h$>L|R-dq6B| z^ChD)k&0T%LDm2&0~74|a_ph^e>w%N(JY*awOEUXQA?9Q)?11aRO%i?&2T;{11nGy zScUpfHDCcY;SfB9L$M3Li`nD6fo;HSrKX93cJnS&Di5GGUpwl?j&W|D&+lxbsN;Y~ z=+F^$lCP7$+-PGT1^mH0mK454EuF_2)ZhsHY{=Mm2na|s=60`n?CuHAND z@5Bzu=|l_BMEu^p<|`e~l7@~g{JlV|BTf^)CVoczgwRn%{5DkLmk^&Ml)*o^HSsyU z+bC(edJl7n%fw-~DZX#&JCw8)Y6u-#MwcjaJL8kHj#7Gv$Rth@I<$^DNV!=<{LYO@ z$aFTV>Hm&N)Q=PI5!$~xULb}MS;SuAV`4F}jL`8mu{%`q{^-U0C83Y_Ca=jnVtoV4 z2|f@5LrwSd_X_bAv4l8Bgbw$3LVm?WiuZYS^9g=Pyl?Ak@j>Dev7LCB(5w0wq2m}a zgE&E)b;}YnD}t1MMSP1`Ph=1W35OU@)Df*jHnEcUBk>V&=lBkVRm358cVbS_yOahI zKPE;Jzac&#bhHzD2)zJ0nu*D7SW=GjW~k181XwGqcbH-eN3fDuPVBdBVuvmN0$;J^ z^VZjKfh{jYKe3T`k(f^`^*)-s^i*CW@`*EUOHyIjzTmZ_=c0Npsrg~e!jcR(zG#-) nmU_vp3_KM4w?8sE*eCOwxI1Tq@kN2KU}fO(p272@AC3Aim2%ec delta 4599 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 HjOhI Date: Thu, 14 Jan 2021 22:34:14 +0200 Subject: [PATCH 5/7] Fix str format --- locale/en/LC_MESSAGES/django.po | 7 ++----- locale/fi/LC_MESSAGES/django.mo | Bin 16104 -> 16189 bytes locale/fi/LC_MESSAGES/django.po | 7 +++---- webapp/models.py | 2 +- 4 files changed, 6 insertions(+), 10 deletions(-) diff --git a/locale/en/LC_MESSAGES/django.po b/locale/en/LC_MESSAGES/django.po index 07c88ba..c25f80f 100644 --- a/locale/en/LC_MESSAGES/django.po +++ b/locale/en/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-14 22:24+0200\n" +"POT-Creation-Date: 2021-01-14 22:32+0200\n" "PO-Revision-Date: 2017-11-02 23:09+0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -1138,13 +1138,10 @@ msgstr "" #: webapp/models.py:61 webapp/models.py:80 webapp/models.py:119 #: webapp/models.py:152 webapp/models.py:198 -#| msgid "Delete" msgid "Deleted: " msgstr "Deleted: " #: webapp/models.py:62 -#, fuzzy -#| msgid "Feed: {}" msgid "{}Feed: {}" msgstr "" @@ -1177,7 +1174,7 @@ msgid "Signup forms" msgstr "" #: webapp/models.py:120 -msgid "#{} {delete_str}{}" +msgid "#{} {}{}" msgstr "" #: webapp/models.py:138 diff --git a/locale/fi/LC_MESSAGES/django.mo b/locale/fi/LC_MESSAGES/django.mo index 1539e6795f9fceb8ba6df619e809563b9f25652e..6c55aba8238eee8a4a68542b8c0510da52985378 100644 GIT binary patch delta 4026 zcmXZe4Q!Xi9l-IcrBF&s%O6@$DpcA+fl4XJM6@kq1Lr`48K`8Lqikh%$eVyLyYg(1 zV8d4TQov;prjQ6muaj@O1c_(L?HO?W##eI5C?!^g41mFQJ;qMX5LAOp||2BYoO zv3@I(oG=3oqzRqqn`pl!==cemsYh`b{uo`rfx+b82S;hR246-8_$_*PPGKcpMN?SG z74i8k=z9%#1AZ~qA4JY?ScwMQ9_w4t3HM_a9znP2Ttb1H6}r$B^yY+^^1kS`8iY<* zif+j;wBN{BAA_cJ0(!{4fS!e~Mi=8%u5*HJNy0($`Ssu%|!E0!QZ=eC3jb1(P}@L)-5~$8SOxumH{EL&z>CVI2hreiAv5VJ|w+Ni;LB z$NG76;EU)UW|8;Du>!~9FVM{V9i8|RxH8zmt(+8{fo{e9=vi1gocudb8x3E= zc3gmeMFYEYM7pwOG-b=s0l$l$fe!TjZRn?Z2b#GPI2uo(_x*p!kYNOso_H5_XEuoq z^UxGFqXRBOCtQVgT!+_S2Rgwfbfw#HSXKzn;W6s3j!gS^j7l@`1Uk-MG=ndofgQ(O zOg^H}i^9Lq0DS7o@}k#9tI&aNMpHO7w%>^qmgaHJbVV7;CXc76PS;u(dXyTz(0=d|Bm(C8`Fhk(3IbR9=a-Y z{HZvf`NLfl9N++w#qa_e`FYI8|KJ4d%}H~h1}wm7ScbE3D6T-ZIc!8?2uEW31$4r^ znsmJW*q3@4=6e5YD7cb|=;8WYtj|WiC1Ec1!L?Y3KR^fk85+<|^!e^sKOF1FFo*Wv zqg(t(bo{rY|G>mZ{C?V@5MA*=}7RhF(H5 z`8xVxdmo)Ar#7{qmi!meP)vgZSH=gUv5fk7bcM6f3BDZb^U?kb(Nr(PQTPP*!;|PO z`g8Oh><$23V9vO7%QEB0zyE+37aOLd*JJ_uDP4@NSgi~oDoI&^K0{ZFAotO?#fv)U!^l;sSrhZ;*e-Qn# zX+ZK*M_1e&U4mw0 zB|71EVtqaO#p^)N)&X?BLq7NZcTzC*XV3uNMF+Tu?(L`O7UWM#BOe)^g#P|d$ALH( z4QLgbu>`$tk3~130dB=|+=2dkFr1{o!3-aukq+TIT!xde3LDYAT#sI}=g@)Q#Qt~| zGuVYr(CfDJuoa;hyB^1274iuP_r~_N+v5H2pus)aj-Jx}=-&Mjo!~WeW$)ok{1E42 z9Vc-FZbdV80)6jQG&5(T|3u%N4e7m-aPgic3mbTBknTv}pOH uvX<7+(mJiF>FXBvt*Ba7GNh$-R^yV!2bQl`*chMBUa`D+QPZOC+W!HrI+mFL delta 3940 zcmXZe3v`!b9Ki8sZPjLLt7$8x?O!R|T5EM$icF%zgvuPH%W^N59i)?M{ZHvAbh;1< z?YKLWgy~S^e#>#|!ZDl*2jPS{Mabp*?R`4c=Y5{{x%{5r^E~gidETD6>79jHcLn~m z@$X3fJ<>6Ru^Ay$7FZj?q^=?C!gDbfM-+vSjbox`VkYH@H~^<$2V4~Em!kddz|Po& zhv9n63n3jg#Rl)7b8bf)euMeAFTT$#PU;JyDJLnM!`K%$UZgMFZJ~PVjfE&+D0#dm>2*m1rPi(1}h% z`;SM*pN?i~2KK>O=mPHQN&bD&L`6GnMhAEjJv`51Kiq|;usv7A_eY@pO0hRq#PaFL zc?}cMfE#0Z9y;MlEW5Qhj1YLQ5bcM&Dg4JD(7-mJD|;!v-x2Fu(SUZNs2Gd%S3e>V?& zi^Em;bJqK_k6lnyOC_^I8B4zL$pS?A$Nhf*~41JL>!^oPsIXuu8V-d~9ZJR5DlFqW61 z?V8ZctVieDjJe+b)kNWE47KT`bq5U%aX4*_nq< zxFEi7LR0@Z=6e6v@!$X((Y<{G-GWch$bXAw9-I8U?~2{1FGmA95zWl0=xv%9osI@L z1N-7t=q*@@p1P$-f=v#uvAt6Woig>?s_N8}K~rz)3tBXP_Bdh7PzI{Y|Jj z`ZC&oJNm=ub2LML;sDI9O%^(|_SEF(@-!+uL<_My-iof|A@tO)L-%YWy7E_|+mLG< ezO8LJt)MV7BiuQyuy00anO|5`+_J80R`LHZL4Mo- diff --git a/locale/fi/LC_MESSAGES/django.po b/locale/fi/LC_MESSAGES/django.po index 91b3f11..1936793 100644 --- a/locale/fi/LC_MESSAGES/django.po +++ b/locale/fi/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-14 22:24+0200\n" +"POT-Creation-Date: 2021-01-14 22:32+0200\n" "PO-Revision-Date: 2017-11-02 23:04+0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -1130,7 +1130,7 @@ msgstr "Uutiset" msgid "Deleted: " msgstr "Poistettu: " -#, fuzzy +#: webapp/models.py:62 #| msgid "Feed: {}" msgid "{}Feed: {}" msgstr "{}Uutinen: {}" @@ -1140,7 +1140,6 @@ msgid "Event" msgstr "Tapahtuma" #: webapp/models.py:81 -#, fuzzy #| msgid "Event: {}" msgid "{}Event: {}" msgstr "{}Tapahtuma: {}" @@ -1166,7 +1165,7 @@ msgid "Signup forms" msgstr "Ilmoittautumislomakkeet" #: webapp/models.py:120 -msgid "#{} {delete_str}{}" +msgid "#{} {}{}" msgstr "" #: webapp/models.py:138 diff --git a/webapp/models.py b/webapp/models.py index 7e67c17..e856e23 100644 --- a/webapp/models.py +++ b/webapp/models.py @@ -117,7 +117,7 @@ class SignupForm(models.Model): def __str__(self): delete_str = _("Deleted: ") if self.deleted else "" - return _('#{} {delete_str}{}').format(self.id, delete_str, self.title) + return _('#{} {}{}').format(self.id, delete_str, self.title) @property def signups(self): From 0a314927339966b0ed725dbbc0fcb07db56d707f Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Fri, 15 Jan 2021 00:27:41 +0200 Subject: [PATCH 6/7] Fix queryset filtering on new soft deletes --- webapp/views.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/webapp/views.py b/webapp/views.py index 97b57c6..b98920b 100644 --- a/webapp/views.py +++ b/webapp/views.py @@ -53,16 +53,16 @@ class EventViewSet(ModelViewSet): if self.request.user.is_authenticated or \ self.request.method == 'POST' or \ self.request.method == 'PUT': - return Event.objects.all().prefetch_related( + return Event.objects.filter(deleted=False).prefetch_related( Prefetch('signupForm', queryset=SignupForm.objects.filter(deleted=False), to_attr='filtered_signup_forms') ) since = self.request.query_params.get('since', None) if since: - return Event.objects.filter(visible=True, end_time__gt=since).order_by('start_time').prefetch_related( + return Event.objects.filter(deleted=False, visible=True, end_time__gt=since).order_by('start_time').prefetch_related( Prefetch('signupForm', queryset=SignupForm.objects.filter(deleted=False, visible=True), to_attr='filtered_signup_forms') ) - return Event.objects.filter(visible=True, end_time__gt=timezone.now()).order_by('start_time').prefetch_related( + return Event.objects.filter(deleted=False, visible=True, end_time__gt=timezone.now()).order_by('start_time').prefetch_related( Prefetch('signupForm', queryset=SignupForm.objects.filter(deleted=False, visible=True), to_attr='filtered_signup_forms') ) @@ -112,8 +112,8 @@ class SignupFormViewSet(ModelViewSet): def get_queryset(self): if self.request.user.is_authenticated: - return SignupForm.objects.all().order_by('start_time') - return SignupForm.objects.filter(visible=True, end_time__gt=timezone.now()).order_by('start_time') + return SignupForm.objects.filter(deleted=False).order_by('start_time') + return SignupForm.objects.filter(deleted=False, visible=True, end_time__gt=timezone.now()).order_by('start_time') def destroy(self, request, pk=None, *args, **kwargs): try: @@ -230,9 +230,9 @@ class FeedViewSet(ModelViewSet): def get_queryset(self): if self.request.user.is_authenticated: - return Feed.objects.all().order_by('publish_time') + return Feed.objects.filter(deleted=False).order_by('publish_time') else: - objs = Feed.objects.filter(visible=True).order_by('publish_time') + objs = Feed.objects.filter(deleted=False, visible=True).order_by('publish_time') # TODO: Bad filtering. Rewrite! result_ids = [] @@ -268,8 +268,8 @@ class JobAdViewSet(ModelViewSet): def get_queryset(self): if self.request.user.is_authenticated: - return JobAd.objects.all() - return JobAd.objects.filter(visible=True, autohide_at__gt=timezone.now()) + return JobAd.objects.filter(deleted=False) + return JobAd.objects.filter(deleted=False, visible=True, autohide_at__gt=timezone.now()) def destroy(self, request, pk=None, *args, **kwargs): try: From d7b6ef3c721256f2fd682238642a10ca40cfeb93 Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Mon, 18 Jan 2021 21:39:25 +0200 Subject: [PATCH 7/7] Change sik.party addresses to sahkoinsinoorikilta.fi --- .env.dev | 2 +- .gitlab-ci.yml | 4 ++-- kaehmy/templates/kaehmy.html | 2 +- locale/en/LC_MESSAGES/django.mo | Bin 16372 -> 16380 bytes locale/en/LC_MESSAGES/django.po | 6 +++--- locale/fi/LC_MESSAGES/django.mo | Bin 16189 -> 16205 bytes locale/fi/LC_MESSAGES/django.po | 10 ++++------ sikweb/settings.py | 4 ++-- stack-compose-dev.yml | 4 ++-- stack-compose.yml | 4 ++-- 10 files changed, 17 insertions(+), 19 deletions(-) diff --git a/.env.dev b/.env.dev index a7b70f0..92c89ca 100644 --- a/.env.dev +++ b/.env.dev @@ -1,4 +1,4 @@ -HOST=web.sik.party +HOST=api.dev.sahkoinsinoorikilta.fi DEBUG=True SECRET_KEY=7p$85^4ibb^p4-=vs44b7!y0e-zemugze18@a#30&71=a8)dp( TG_BOT_TOKEN= diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6956703..462a221 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -78,7 +78,7 @@ deploy:dev: - develop environment: name: dev - url: http://api.dev.sik.party + url: http://api.dev.sahkoinsinoorikilta.fi variables: DOCKER_HOST: $DEV_CI_DOCKER_HOST DOCKER_TLS_VERIFY: 1 @@ -100,7 +100,7 @@ deploy:production: - master environment: name: production - url: api.sika.sik.party + url: api.sahkoinsinoorikilta.fi when: manual variables: DOCKER_HOST: $CI_DOCKER_HOST diff --git a/kaehmy/templates/kaehmy.html b/kaehmy/templates/kaehmy.html index 947bc6d..ac6d697 100644 --- a/kaehmy/templates/kaehmy.html +++ b/kaehmy/templates/kaehmy.html @@ -16,7 +16,7 @@ {% blocktrans %}Kaehmykoneella voit ilmaista kiinnostuksesi toimia killassa ensi vuonna. Listassa on vastuualueittain sekä hallitus- että toimihenkilövirkoja. Koska lista ei ole koskaan täydellinen, voit myös ehdottaa ihan uutta toimenkuvaa. - Jos sinulla on kysyttävää mistä tahansa virasta, kannattaa konsultoida kaehmyopasta + Jos sinulla on kysyttävää mistä tahansa virasta, kannattaa konsultoida kaehmyopasta tai olla yhteydessä kyseistä virkaa tänä vuonna toimittavaan henkilöön.{% endblocktrans %}

diff --git a/locale/en/LC_MESSAGES/django.mo b/locale/en/LC_MESSAGES/django.mo index 060b64f02bc26635190e6f656e2e88bc0d276215..6ccda0d96dd2c9feec5edbad6335b8861ddf5a79 100644 GIT binary patch delta 2746 zcmXZdeN5F=9LMnkS03cy!sSsOvI_zN0uopV2sBhGX))$}VA3AG9;dxBMA5hPSWw9v6 zqUOm)50<0mslaTk&2pHWMu34*`~x>(Ay=1RKStr5n1Mr>f@7G9uh{+>)WR3gi$7cc zK~*Mpg)zyPf(o<<6R^RtjTTg9ov6~>gPQOFvODH+)I?LL63?Iq-$Yg59aO15MQz!i zxE)Onb3h9!p$n+WTtZdC3CVRciA3GtM+K0JTCfZiST*{w3H4x)bq^|_0i<~5K~#p% zBOh~uFF$^ds$g`UF`2j$={shF9cV=@csGXOFe;G!s7gGE+RHKP%jls$XRn_`C2$&b zD9_<$^sF?d1Gk~Jat<}mJo;GQd_hBd_6uqPlW)v&2*YU1!Btp_e9R8MnA;3tJ03*^ zoK)aeCLMKXvrq}F#!y^`d`ul*ix|YqtZxE^1cA4(iWaOXGNv1Ez;JvOBk?#c#kWzJ zpG7V75h}oMQTO|b-RsLxnP#FgFUA;Li&|$RIyyYfG<0JCRf%5PAGD5G52Fs*G-{%A zcolwytZfphJ56&fs*+t8i+!lmK8SkmF*`n1Lj85)F?(SemEkP5;3?GU&t2`Ff%SMb z{YKP%gQyqF!^nX*qo}Q$MFsk$RljW=NQvwxJ^JK%M#lBnC5r zihLFo@I31Nv#64vM+NjXsCQhB_p5sKZo`3gmjc z4sS*+c-US)g39D2)Iu|;Ku)0+c;AkHWBUuZjB!tydw(WsK4%pTO;nD&tV}H`;s7e3 zU8sO|qh7gvn2V2KIZoUDMO4MS4C?-D)V%qq_d>btZ$Z5YTaiE=bB7&x0JZQa=HobO zYfhuySf8OvxPU74BI;KV!atS9!%$llg~VbiQ5EUL1nfh-x`$DFKZ;)c{$HTc9zqFG zH|AX9W>SGVRE?;Nx=|1IqZS@QRpKG*F;oH{paT5ddJ%Of7tn{k3U>=uppW%U84aC* z4XBKpQG2r!wU_O7d@m}aVNApWs4W>o1vY~^rr{@*)L$k4 zl>r%E616quweD6p z^)ytv?WhcQp(YqWWpE$rO*M)|IDrNDAr_;lqx?{U3hWT7G83r7Jc+908>simDb#cG z$dB$|oVPgS-l-bzzo8+$2WxznL(EiVLTgNN;I@wLU{_zTtGl~5*b(f!Jy3FMaB6({ HOB?%+A5`lBheYpBzq8%l*E#3+`Kn0MBS}+F{*m?|LE$YEGYbPq8ZX|i;LDUYP zM?U5>Ujh6cl|fIIF)6qb={u&<4m6?`ycff;4;9EGs7ySGs)-@%%jls$X|JEbCG^jt zit++B;5-I#>l*hcCsFfEqo4K77c_Kczn~_V!!%sLWtfsp;b1oMG28iKPScC6ID!h; zyVlK2EUIV|Q5#r;p|}D0m{Pv}!4{lnebbaf;oxnoq6IhR8Pkb3VK}~q5qJtC@om)3 z&!ZOl2o>PBsQV-H-Rm)^oyMbzI1{~Cgj%Nx9TiU<4c*v;%EVo^-(wxH9zhk^C~Be$ zxDLNU);7z?J593*mB~9X3WKO>??FBHxE&uVApg4YxVTV>JD$BJ!^Yw=l32n^BSOLREb?5`!5) zMLvNFcp7#8c~r_Tq5}FFmD(%l!{1Oxw}^T!f^@}T6zaY-hlVE3K@~|Us+h`Af!v6- z*nnE_h`oLcb*3+&78*wdGKE^;eLMb*?ayEWi#6uyaCjEA=mb|px%UyNT80n+YUIWg$FSkkD`v| zEb5K*87hS{s8r9Qeg#+U_yX#vLiy(+7PAhOk=+=JLDZ|e4|Vo~=+p221sbg(q!4vu zN{PFZLR3-Jpmx-Xdawhva4#wo4_S|+Ht+!|z|XChQAIg}evB-2k1QGetZ#B?s0J!g zJFY{W^$yfo-fqYDqIT4Wad-fABtxjc#!*%NF6#O3FdlzG%`=ZWQtu|$Xmph7SQ@*q z0@Z&GH{&@}%Hzu11rkv2@N8U;H{%Lyw*7smoe!Xj@@eZaRAydBo&6*x;wNR~Un&2U z0r@X#XZ~_GBblh36r;w=Q4`gp7TSS2iWXFA_h1&@XRjZ{Tj-y_{Wy!-P+NtYnT`tb zuax#Ppq)I1x?vb~Brl>C976?g8Z+=?)N_AXub~3+RJzq3h1y{usz&NCfSs6(hcE?4 z9Xs%z9rzJ7QD~LBfEQJKai~lrqRukiT8zp-jlEur+Q3%S5pBl?3}O(^ppGWD+C2)V zoQ6_&D{6;3Q4@5dc5pxHO*M#lIE-uYL(IoHY{#q{+`tZ@GBb=S<`bw)zJV&fDb#b* y$dB%Dv@buzj8*v-LqqxxSNZ2dy2i?4@9;*o2U`mEwFe9KwshUoGxlm)efob4wi^uq diff --git a/locale/en/LC_MESSAGES/django.po b/locale/en/LC_MESSAGES/django.po index c25f80f..73d3ea9 100644 --- a/locale/en/LC_MESSAGES/django.po +++ b/locale/en/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-14 22:32+0200\n" +"POT-Creation-Date: 2021-01-18 21:36+0200\n" "PO-Revision-Date: 2017-11-02 23:09+0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -392,8 +392,8 @@ msgid "" " Koska lista ei ole koskaan täydellinen, voit myös ehdottaa ihan " "uutta toimenkuvaa.\n" " Jos sinulla on kysyttävää mistä tahansa virasta, kannattaa " -"konsultoida kaehmyopasta\n" +"konsultoida kaehmyopasta\n" " tai olla yhteydessä kyseistä virkaa tänä vuonna toimittavaan " "henkilöön." msgstr "" diff --git a/locale/fi/LC_MESSAGES/django.mo b/locale/fi/LC_MESSAGES/django.mo index 6c55aba8238eee8a4a68542b8c0510da52985378..219335dd3749cacf39e93cd2e7efc52fea2a36e2 100644 GIT binary patch delta 3047 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 diff --git a/locale/fi/LC_MESSAGES/django.po b/locale/fi/LC_MESSAGES/django.po index 1936793..9a184d2 100644 --- a/locale/fi/LC_MESSAGES/django.po +++ b/locale/fi/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-01-14 22:32+0200\n" +"POT-Creation-Date: 2021-01-18 21:36+0200\n" "PO-Revision-Date: 2017-11-02 23:04+0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -393,8 +393,8 @@ msgid "" " Koska lista ei ole koskaan täydellinen, voit myös ehdottaa ihan " "uutta toimenkuvaa.\n" " Jos sinulla on kysyttävää mistä tahansa virasta, kannattaa " -"konsultoida kaehmyopasta\n" +"konsultoida kaehmyopasta\n" " tai olla yhteydessä kyseistä virkaa tänä vuonna toimittavaan " "henkilöön." msgstr "" @@ -404,7 +404,7 @@ msgstr "" " Koska lista ei ole koskaan täydellinen, voit myös ehdottaa ihan " "uutta toimenkuvaa.\n" " Jos sinulla on kysyttävää mistä tahansa virasta, kannattaa " -"konsultoida kaehmyopasta \n" " tai olla yhteydessä kyseistä virkaa tänä vuonna toimittavaan " "henkilöön." @@ -1131,7 +1131,6 @@ msgid "Deleted: " msgstr "Poistettu: " #: webapp/models.py:62 -#| msgid "Feed: {}" msgid "{}Feed: {}" msgstr "{}Uutinen: {}" @@ -1140,7 +1139,6 @@ msgid "Event" msgstr "Tapahtuma" #: webapp/models.py:81 -#| msgid "Event: {}" msgid "{}Event: {}" msgstr "{}Tapahtuma: {}" diff --git a/sikweb/settings.py b/sikweb/settings.py index e3e1778..a845434 100644 --- a/sikweb/settings.py +++ b/sikweb/settings.py @@ -16,8 +16,8 @@ from sikweb.base import * # SECURITY WARNING: don't run with debug turned on in production! DEBUG = os.getenv('DEBUG', False) == 'True' -URL = os.getenv("HOST", "api.sika.sik.party") -FRONTEND_URL = os.getenv("FRONTEND_URL", "sika.sik.party") +URL = os.getenv("HOST", "api.sahkoinsinoorikilta.fi") +FRONTEND_URL = os.getenv("FRONTEND_URL", "prod.sahkoinsinoorikilta.fi") ALLOWED_HOSTS = ["localhost", "127.0.0.1", FRONTEND_URL, URL] if DEBUG: ALLOWED_HOSTS = ["*"] diff --git a/stack-compose-dev.yml b/stack-compose-dev.yml index d178e5c..b02e055 100644 --- a/stack-compose-dev.yml +++ b/stack-compose-dev.yml @@ -27,8 +27,8 @@ services: - 8000:8000 environment: - - HOST=api.dev.sik.party - - FRONTEND_URL=dev.sik.party + - HOST=api.dev.sahkoinsinoorikilta.fi + - FRONTEND_URL=dev.sahkoinsinoorikilta.fi - DEBUG=True - EMAIL_API_KEY_FILE=/run/secrets/DJANGO_EMAIL_API_KEY - EMAIL_API_SECRET_FILE=/run/secrets/DJANGO_EMAIL_API_SECRET diff --git a/stack-compose.yml b/stack-compose.yml index 595eda2..ca2e14b 100644 --- a/stack-compose.yml +++ b/stack-compose.yml @@ -46,8 +46,8 @@ services: - TG_BOT_TOKEN_FILE=/run/secrets/BACKEND_TG_BOT_TOKEN - DB_USER_FILE=/run/secrets/BACKEND_DB_USER - DB_PASSWD_FILE=/run/secrets/BACKEND_DB_PASSWD - - HOST=api.sika.sik.party - - FRONTEND_URL=sika.sik.party + - HOST=api.sahkoinsinoorikilta.fi + - FRONTEND_URL=prod.sahkoinsinoorikilta.fi - DB_HOST=db - DB_PORT=5432 - EMAIL_API_KEY_FILE=/run/secrets/BACKEND_EMAIL_API_KEY