Compare commits

...

6 Commits
1.0 ... master

Author SHA1 Message Date
asamihassan 44bab85ba7 person deletion method overload 2022-10-04 19:21:57 +05:00
PCoder 3b30b9666a Update Changlog 2022-09-29 08:58:00 +05:30
PCoder 30f0743c41 #11013: filter persons only with profile_on_web true for public search 2022-09-29 07:40:52 +05:30
PCoder db54e3c3d7 Merge remote-tracking branch 'ungleich-public/master' 2022-09-26 10:48:17 +05:30
PCoder d7199827da Fix infinite redirections in production 2022-09-25 21:21:42 +05:30
app 0574694d38 Revert back 2022-09-25 14:20:51 +00:00
6 changed files with 109 additions and 5 deletions

View File

@ -1,5 +1,8 @@
# CHANGELOG.md
## 2.1 (2022-09-29)
- issue#11013: non-public entries appearing as public
## 2.0 (2022-09-19) Dockerify https://redmine.ungleich.ch/issues/10884
Steps:

View File

@ -75,7 +75,7 @@ RUN chown -R app:app $APP_HOME
# change to the app user
USER app
RUN python manage.py collectstatic --noinput
#RUN python manage.py collectstatic --noinput
# run entrypoint.prod.sh
ENTRYPOINT ["/entrypoint.prod.sh"]

View File

@ -9,6 +9,7 @@ from django.http import HttpResponse
import csv
from django import forms
from django.contrib.admin.widgets import AutocompleteSelect
from django.contrib import messages # import messages
class autocomplete_fields_form(forms.ModelForm):
@ -124,6 +125,81 @@ class PersonAdmin(admin.ModelAdmin):
'country', 'organisation_english', 'organisation_2', 'organisation_3', 'acronym')
return queryset
def get_actions(self, request):
actions = super().get_actions(request)
if 'delete_selected' in actions:
del actions['delete_selected']
return actions
def delete_model(self, request, obj):
self.delete_person(request, obj)
return super(PersonAdmin, self).delete_model(request, obj)
def delete_person(self, request, obj):
taxa_people = TaxaPeople.objects.filter(person=obj.id)
for i in taxa_people:
i.delete()
ranges_people = RangesPeople.objects.filter(person=obj.id)
for i in ranges_people:
i.delete()
resources_people = ResourcesPeople.objects.filter(person=obj.id)
for i in resources_people:
i.delete()
scales_people = ScalesPeople.objects.filter(person=obj.id)
for i in scales_people:
i.delete()
people_function = PeopleFunction.objects.filter(person=obj.id)
for i in people_function:
i.delete()
people_range = PeopleRange.objects.filter(person=obj.id)
for i in people_range:
i.delete()
people_resources = PeopleResource.objects.filter(person=obj.id)
for i in people_resources:
i.delete()
fields_people = FieldsPeople.objects.filter(person=obj.id)
for i in fields_people:
i.delete()
methods_people = MethodsPeople.objects.filter(person=obj.id)
for i in methods_people:
i.delete()
def delete_persons(self, request, obj):
for o in obj.all():
taxa_people = TaxaPeople.objects.filter(person=o.id)
for i in taxa_people:
i.delete()
ranges_people = RangesPeople.objects.filter(person=o.id)
for i in ranges_people:
i.delete()
resources_people = ResourcesPeople.objects.filter(person=o.id)
for i in resources_people:
i.delete()
scales_people = ScalesPeople.objects.filter(person=o.id)
for i in scales_people:
i.delete()
people_function = PeopleFunction.objects.filter(person=o.id)
for i in people_function:
i.delete()
people_range = PeopleRange.objects.filter(person=o.id)
for i in people_range:
i.delete()
people_resources = PeopleResource.objects.filter(person=o.id)
for i in people_resources:
i.delete()
fields_people = FieldsPeople.objects.filter(person=o.id)
for i in fields_people:
i.delete()
methods_people = MethodsPeople.objects.filter(person=o.id)
for i in methods_people:
i.delete()
o.delete()
messages.success(request, "Successfully deleted")
delete_persons.short_description = 'Delete Person & Related Fields'
actions = [download_csv, delete_persons]
class ResourceKeywordInline(admin.TabularInline):
autocomplete_fields = ['keyword']
@ -192,7 +268,26 @@ class ResourceAdmin(admin.ModelAdmin):
del actions['delete_selected']
return actions
def delete_model(self, request, obj):
self.delete_resource(request, obj)
return super(ResourceAdmin, self).delete_model(request, obj)
def delete_resource(self, request, obj):
resource_keyword = ResourceKeyword.objects.filter(resource=obj.id)
for i in resource_keyword:
i.delete()
resource_range = ResourceRange.objects.filter(resource_title=obj.id)
for i in resource_range:
i.delete()
resource_people = ResourcesPeople.objects.filter(resource=obj.id)
for i in resource_people:
i.delete()
resource_people_resource = PeopleResource.objects.filter(
resource=obj.id)
for i in resource_people_resource:
i.delete()
def delete_resources(self, request, obj):
for o in obj.all():
resource_keyword = ResourceKeyword.objects.filter(resource=o.id)
for i in resource_keyword:
@ -208,9 +303,10 @@ class ResourceAdmin(admin.ModelAdmin):
for i in resource_people_resource:
i.delete()
o.delete()
delete_resource.short_description = 'Delete Resource & Related Fields'
messages.success(request, "Successfully deleted")
delete_resources.short_description = 'Delete Resource & Related Fields'
actions = [download_csv, delete_resource]
actions = [download_csv, delete_resources]
class RangeNameTranslationInline(admin.TabularInline):

View File

@ -213,10 +213,10 @@ class SearchView(View):
per_page = int(self.request.GET.get('per_page', 10))
q = self.request.GET.get('q', '').strip()
if not q or len(q) < 3:
query_set = Person.objects.all()
query_set = Person.objects.filter(profile_on_web=True).all()
else:
query = reduce(operator.or_, (Q(field_indexer__icontains=item) for item in q.split(" ")))
query_set = Person.objects.filter(query)
query_set = Person.objects.filter(query).filter(profile_on_web=True)
q_country = self.request.GET.get('country', '')
q_range = self.request.GET.get('range', '')

View File

@ -17,6 +17,9 @@ DATABASES = {
SECURE_SSL_REDIRECT = True
# See https://docs.djangoproject.com/en/2.2/ref/settings/#secure-proxy-ssl-header
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True

View File

@ -1,4 +1,6 @@
#!/bin/ash
#python manage.py migrate
python manage.py collectstatic --noinput
#
#gunicorn gmba_django.wsgi:application --bind [::]:8000