Skip to content

Commit

Permalink
v118
Browse files Browse the repository at this point in the history
  • Loading branch information
annihilation7071 committed Jan 4, 2025
1 parent ec2f1b1 commit 78d4135
Show file tree
Hide file tree
Showing 6 changed files with 69 additions and 19 deletions.
58 changes: 51 additions & 7 deletions backend/editor/item_editor.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,64 @@
from backend.utils import tag_normalizer
from backend.editor import eutils
from backend.projects.cls import Projects
from icecream import ic
ic.configureOutput(includeContext=True)

edit_types = {
"edit-tags": "tag",
"edit-series": "series"
}

def edit(projects, project, edit_type, data: str):
edit_types = {
"edit-tags": "tag",
"edit-series": "series"
}

def edit(projects: Projects, project: dict, edit_type: str, data: str, update_priority: bool = True):
ic()

if edit_type not in edit_types:
raise ValueError(f"edit_type: {edit_type} not supported")

items = data.split("\n")
items = [tag for tag in items if tag != ""]
items = [item for item in items if item != ""]
items = tag_normalizer(items)

eutils.update_data(projects, project, edit_types[edit_type], items)
if project["lid"].startswith("pool_"):
multiple_edit(projects, project, edit_type, items)
projects.update_priority(project)
return

eutils.update_data(projects, project, edit_types[edit_type], items, update_priority=update_priority)

return


def multiple_edit(projects: Projects, project: dict, edit_type: str, items: list):
ic()
project_items: list = project[edit_types[edit_type]]
minus = []
plus = []
for item in items:
if item not in project_items:
plus.append(item)

for item in items:
try:
project_items.remove(item)
except ValueError:
continue

minus = project_items

for variant in project["lvariants"]:
lid: str = variant.split(":")[0]
target_project = projects.get_project_by_lid(lid)
new_data: list = target_project[edit_types[edit_type]]

for item in plus:
if item not in new_data:
new_data.append(item)

for item in minus:
if item in new_data:
new_data.remove(item)

edit(projects, target_project, edit_type, "\n".join(new_data), update_priority=False)

8 changes: 7 additions & 1 deletion backend/projects/cls.py
Original file line number Diff line number Diff line change
Expand Up @@ -312,6 +312,7 @@ def create_priority(self, priority: list, non_priority: list, lid: str = None, u
pool = self.get_project_by_lid(priority[0][0])
pool["lid"] = f"pool_{utils.gen_lid()}" if lid is None else lid
pool.pop("_id", None)
pool["active"] = True
ic(pool["lid"])

# union some data
Expand All @@ -333,7 +334,7 @@ def create_priority(self, priority: list, non_priority: list, lid: str = None, u
self.session.commit()
else:
ic("Update existing pool")
self.update_item(pool, key=lid)
self.update_item(pool, key="lid")

# deactivate original projects
lids = [p[0] for p in (priority + non_priority)]
Expand All @@ -343,6 +344,7 @@ def create_priority(self, priority: list, non_priority: list, lid: str = None, u
return pool["lid"]

def update_priority(self, project: dict):
ic()
pool = self.session.query(Project).filter(
Project.lvariants == project["lvariants"],
Project.lid.startswith("pool_")
Expand Down Expand Up @@ -397,6 +399,7 @@ def update_pools_v(self, force: bool = False):
variants_editor.edit(self, dict_project, variant)

def update_item(self, project: dict, key: str = "_id"):
ic()
if key == "_id":
_id = project["_id"]
elif key == "lid":
Expand All @@ -406,11 +409,14 @@ def update_item(self, project: dict, key: str = "_id"):

project["search_body"] = make_search_body(project)
project = {column: project[column] for column in columns}
ic(project)

if key == "_id":
ic()
# noinspection PyUnboundLocalVariable
self.session.query(Project).filter_by(_id=_id).update(project)
elif key == "lid":
ic()
# noinspection PyUnboundLocalVariable
self.session.query(Project).filter_by(lid=lid).update(project)
self.session.commit()
Expand Down
6 changes: 3 additions & 3 deletions routers/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ async def index(request: Request, page: int = 1, search: str = ""):


@router.get("/project/lid/{project_lid}", response_class=HTMLResponse)
async def detail_view_lid(request: Request, project_lid: str):
async def detail_view(request: Request, project_lid: str):
project = projects.get_project_by_lid(project_lid)
images = utils.get_pages(project)
return templates.TemplateResponse(
Expand Down Expand Up @@ -90,7 +90,7 @@ async def detail_view_lid(request: Request, project_lid: str):


@router.get("/project/lid/{project_lid}/{page_id}", response_class=HTMLResponse)
async def reader_lid(request: Request, project_lid: str, page_id: int):
async def reader(request: Request, project_lid: str, page_id: int):
project = projects.get_project_by_lid(project_lid)
images = utils.get_pages(project)
page = page_id
Expand All @@ -103,7 +103,7 @@ async def reader_lid(request: Request, project_lid: str, page_id: int):
"request": request,
"image": image,
"current_page": page,
"project_id": project_lid,
"project_lid": project_lid,
"total_pages": total_pages,
"visible_pages": visible_pages,
},
Expand Down
4 changes: 2 additions & 2 deletions templates/detailview.html
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ <h2>{{ project.subtitle }}</h2>
<div class="label">Variants:</div>
<div class="tags-container">
{% for i in range(0, project.lvariants|length) %}
<a href="{{ request.url_for('detail_view_lid', project_lid=project.lvariants[i].split(':')[0]) }}?{{ request.query_params }}"
<a href="{{ request.url_for('detail_view', project_lid=project.lvariants[i].split(':')[0]) }}?{{ request.query_params }}"
class="tag tag-click{{ " tag-priority" if project.lvariants[i].split(':')[0] == project.lid }}">{{ project.variants_view[i] }}</a>
{% endfor %}
<button class="edit-button" data-type="edit-variants" data-content="{{ '\n'.join(project.lvariants) }}">+</button>
Expand All @@ -138,7 +138,7 @@ <h2>{{ project.subtitle }}</h2>
<main class="detail-view-pages">
<div class="grid-container-pages">
{% for image in images %}
<a href="{{ request.url_for('reader_lid', project_lid=project.lid, page_id=image.idx + 1) }}{{ ('?' + request.query_string.decode('utf-8')) if request.query_string else '' }}"
<a href="{{ request.url_for('reader', project_lid=project.lid, page_id=image.idx + 1) }}{{ ('?' + request.query_string.decode('utf-8')) if request.query_string else '' }}"
class="image-item">
<img src="{{ request.url_for('get_image', image_path=image.path | urlencode) }}" alt="Error">
</a>
Expand Down
2 changes: 1 addition & 1 deletion templates/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
<main>
<div class="grid-container">
{% for project in projects %}
<a href="{{ request.url_for('detail_view_lid', project_lid=project.lid) }}?page={{ current_page }}&search={{ request.query_params.get('search', '') }}"
<a href="{{ request.url_for('detail_view', project_lid=project.lid) }}?page={{ current_page }}&search={{ request.query_params.get('search', '') }}"
class="project-item-container">
<div class="project-item-preview-data pages-count">{{ project.pages }}</div>
{% if project.lid.startswith('pool_') %}
Expand Down
10 changes: 5 additions & 5 deletions templates/reader.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
{% include 'header.html' %}
<header class="extra_header">
<div class="extra-nav-buttons">
<a href="{{ url_for('detail_view', project_id=project_id) }}?{{ request.query_string }}">Back</a>
<a href="{{ url_for('detail_view', project_lid=project_lid) }}?{{ request.query_string }}">Back</a>
</div>
</header>
<main>
Expand All @@ -29,23 +29,23 @@
<div class="pagination">
<!-- Prev button -->
{% if current_page > 1 %}
<a href="{{ url_for('reader', project_id=project_id, page_id=current_page - 1) }}?{{ request.query_string }}">&laquo; Prev</a>
<a href="{{ url_for('reader', project_lid=project_lid, page_id=current_page - 1) }}?{{ request.query_string }}">&laquo; Prev</a>
{% endif %}

<!-- Show visible pages buttons -->
{% for page in visible_pages %}
{% if page == '...' %}
<span class="ellipsis">...</span>
{% elif page == current_page %}
<a href="{{ url_for('reader', project_id=project_id, page_id=page) }}?{{ request.query_string }}" class="active">{{ page }}</a>
<a href="{{ url_for('reader', project_lid=project_lid, page_id=page) }}?{{ request.query_string }}" class="active">{{ page }}</a>
{% else %}
<a href="{{ url_for('reader', project_id=project_id, page_id=page) }}?{{ request.query_string }}">{{ page }}</a>
<a href="{{ url_for('reader', project_lid=project_lid, page_id=page) }}?{{ request.query_string }}">{{ page }}</a>
{% endif %}
{% endfor %}

<!-- Next button -->
{% if current_page < total_pages %}
<a href="{{ url_for('reader', project_id=project_id, page_id=current_page + 1) }}?{{ request.query_string }}">Next &raquo;</a>
<a href="{{ url_for('reader', project_lid=project_lid, page_id=current_page + 1) }}?{{ request.query_string }}">Next &raquo;</a>
{% endif %}
</div>
</main>
Expand Down

0 comments on commit 78d4135

Please sign in to comment.