Add module search in name and desc
This commit is contained in:
parent
7e7d95ffb0
commit
20fbc9f732
@ -34,3 +34,11 @@ class FileFieldForm(forms.ModelForm):
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
class ModuleSearchForm(forms.Form):
|
||||
name = forms.CharField(required=False, widget=forms.TextInput(
|
||||
attrs={
|
||||
'class': 'form-control ml-3 w-75',
|
||||
'placeholder': 'Search',
|
||||
'aria-label': 'Search',
|
||||
}))
|
||||
|
@ -8,7 +8,7 @@
|
||||
<!-- Search form -->
|
||||
<form class="form-inline d-flex justify-content-center md-form form-sm mt-0">
|
||||
<i class="fa fa-search" aria-hidden="true"></i>
|
||||
<input class="form-control ml-3 w-75" type="text" placeholder="Search" aria-label="Search">
|
||||
{{ form.name }}
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@ -27,6 +27,8 @@
|
||||
<p><a class="btn btn-secondary" href="{% url 'mod_detail' pk=module.id req_ver='latest' %}" role="button">View details »</a></p>
|
||||
</div>
|
||||
</div>
|
||||
{% empty %}
|
||||
No module matches your request.
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
|
@ -9,8 +9,10 @@ from django.views import View
|
||||
from django.http import HttpResponse, JsonResponse
|
||||
from django.utils import timezone
|
||||
from django.core.files import File
|
||||
from django.db.models import Q
|
||||
from bootstrap_modal_forms.generic import BSModalCreateView, BSModalLoginView
|
||||
from .forms import CustomUserCreationForm, CustomAuthenticationForm, FileFieldForm
|
||||
from .forms import (CustomUserCreationForm, CustomAuthenticationForm, FileFieldForm,
|
||||
ModuleSearchForm)
|
||||
from .models import Module, Version, Dependency
|
||||
from PDMI import settings
|
||||
from packaging.specifiers import SpecifierSet
|
||||
@ -44,15 +46,27 @@ class ModuleListView(ListView):
|
||||
"""Lists all available modules"""
|
||||
model = Module
|
||||
paginate_by = 100
|
||||
form_class = ModuleSearchForm
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
context['now'] = timezone.now()
|
||||
context['form'] = ModuleSearchForm(initial={'name': self.request.GET.get('name')})
|
||||
return context
|
||||
|
||||
def get_queryset(self):
|
||||
try:
|
||||
name = self.request.GET.get('name')
|
||||
object_list = self.model.objects.filter(Q(name__icontains=name) |
|
||||
Q(desc__icontains=name))
|
||||
except ValueError:
|
||||
object_list = self.model.objects.all()
|
||||
return object_list
|
||||
|
||||
|
||||
class ModuleDetailView(View):
|
||||
"""Shows details about module"""
|
||||
|
||||
def get(self, request, pk, req_ver="latest"):
|
||||
module = get_object_or_404(Module, id=pk)
|
||||
versions = Version.objects.filter(module=module)
|
||||
@ -101,14 +115,15 @@ class UploadView(LoginRequiredMixin, FormView):
|
||||
with open(os.path.join(extract_path, 'infos.toml'), 'r') as f:
|
||||
# Reading and parsing toml file
|
||||
module_info = toml.loads(f.read())
|
||||
toml_file = File(open(os.path.join(extract_path, 'infos.toml'), 'r'))
|
||||
toml_file = File(
|
||||
open(os.path.join(extract_path, 'infos.toml'), 'r'))
|
||||
if os.path.isfile(os.path.join(extract_path, 'README.md')):
|
||||
with open(os.path.join(extract_path, 'README.md'), 'r') as f:
|
||||
# Reading README.md file
|
||||
readme = f.read()
|
||||
else:
|
||||
readme = "No readme provided."
|
||||
shutil.rmtree(extract_path) # Clean temp files
|
||||
shutil.rmtree(extract_path) # Clean temp files
|
||||
os.remove(zip_path)
|
||||
for required_field in REQUIRED_FIELDS:
|
||||
if not required_field in module_info.keys():
|
||||
|
Loading…
Reference in New Issue
Block a user