Skip to content

Commit 533c434

Browse files
Merge pull request #22 from app-generator/file-info
add file info model
2 parents e86894d + e1c5321 commit 533c434

File tree

7 files changed

+93
-2
lines changed

7 files changed

+93
-2
lines changed

home/admin.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
from django.contrib import admin
2+
from home.models import FileInfo
23

34
# Register your models here.
5+
6+
admin.site.register(FileInfo)

home/migrations/0001_initial.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Generated by Django 4.2.2 on 2023-07-06 07:39
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
initial = True
9+
10+
dependencies = [
11+
]
12+
13+
operations = [
14+
migrations.CreateModel(
15+
name='FileInfo',
16+
fields=[
17+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
18+
('path', models.URLField()),
19+
('info', models.CharField(max_length=255)),
20+
],
21+
),
22+
]

home/models.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
11
from django.db import models
22

33
# Create your models here.
4+
5+
class FileInfo(models.Model):
6+
path = models.URLField()
7+
info = models.CharField(max_length=255)
8+
9+
def __str__(self):
10+
return self.path

home/templatetags/info_value.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
from django import template
2+
from home.models import FileInfo
3+
4+
register = template.Library()
5+
6+
@register.filter
7+
def info_value(path):
8+
file_info = FileInfo.objects.filter(path=path)
9+
if file_info.exists():
10+
return file_info.first().info
11+
else:
12+
return ""

home/urls.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@
99
path('delete-file/<str:file_path>/', views.delete_file, name='delete_file'),
1010
path('download-file/<str:file_path>/', views.download_file, name='download_file'),
1111
path('upload-file/', views.upload_file, name='upload_file'),
12+
path('save-info/<str:file_path>/', views.save_info, name='save_info'),
1213
]

home/views.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from django.shortcuts import render, redirect
55
from django.http import HttpResponse, FileResponse, Http404
66
from django.conf import settings
7+
from home.models import FileInfo
78

89
# Create your views here.
910

@@ -51,6 +52,18 @@ def get_files_from_directory(directory_path):
5152
print( ' > ' + str( e ) )
5253
return files
5354

55+
def save_info(request, file_path):
56+
path = file_path.replace('%slash%', '/')
57+
if request.method == 'POST':
58+
FileInfo.objects.update_or_create(
59+
path=path,
60+
defaults={
61+
'info': request.POST.get('info')
62+
}
63+
)
64+
65+
return redirect(request.META.get('HTTP_REFERER'))
66+
5467
def get_breadcrumbs(request):
5568
path_components = [component for component in request.path.split("/") if component]
5669
breadcrumbs = []

templates/pages/file-manager.html

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{% extends 'layouts/base.html' %}
2-
{% load static file_extension %}
2+
{% load static file_extension info_value %}
33

44
{% block extrastyle %}
55
<style>
@@ -88,10 +88,18 @@
8888
</tr>
8989
{% for file in files %}
9090
<tr>
91-
<td>{{ file.filename }}</td>
91+
<td>
92+
<span data-bs-toggle="tooltip" title="{{file.file_path|info_value}}">
93+
{{ file.filename }}
94+
</span>
95+
</td>
9296
<td>{{ file.filename|file_extension|cut:"."|upper }}</td>
9397
<td>
9498
<div class="d-flex align-items-center actions">
99+
<span data-bs-toggle="modal" data-bs-target="#info-{{forloop.counter}}">
100+
<i title="Info" class="fa-solid fa-info text-success"></i>
101+
</span>
102+
<div class="dot-separator mx-2"></div>
95103
<span data-bs-toggle="modal" data-bs-target="#file-{{forloop.counter}}">
96104
<i title="View" class="fa-solid fa-eye text-primary"></i>
97105
</span>
@@ -151,6 +159,31 @@ <h1 class="modal-title fs-5" id="exampleModalLabel">Delete File</h1>
151159
</div>
152160
</div>
153161
</div>
162+
<!-- Info Modal -->
163+
<div class="modal fade" id="info-{{forloop.counter}}" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
164+
<div class="modal-dialog">
165+
<div class="modal-content">
166+
<div class="modal-header">
167+
<h1 class="modal-title fs-5" id="exampleModalLabel">File Info</h1>
168+
<div class="" id="modal-close-btn-{{forloop.counter}}" data-bs-dismiss="modal" aria-label="Close">
169+
<i class="fa-solid fa-circle-xmark fs-5"></i>
170+
</div>
171+
</div>
172+
<div class="modal-body">
173+
<form action="{% url 'save_info' file.file_path|encoded_file_path %}" method="post">
174+
{% csrf_token %}
175+
<div class="form-group mb-2">
176+
<label for="" class="form-label">File Info</label>
177+
<input type="text" value="{{file.file_path|info_value}}" name="info" id="" class="form-control">
178+
</div>
179+
<div class="d-flex justify-content-end">
180+
<button type="submit" class="btn btn-primary" data-bs-dismiss="modal">Save</button>
181+
</div>
182+
</form>
183+
</div>
184+
</div>
185+
</div>
186+
</div>
154187
{% endfor %}
155188
</table>
156189
</div>

0 commit comments

Comments
 (0)