9 | {% endblock %}
10 |
--------------------------------------------------------------------------------
/.github/scripts/prepare-ci.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | cp .env.example .env
4 |
5 | sed -i "/^DEBUG='False'/d" .env
6 | sed -i "/^NGINX_IMAGE='lscr.io\/linuxserver\/swag'/d" .env
7 | sed -i "/^NGINX_CONF='.\/nginx.prod.conf'/d" .env
8 | sed -i "/^NGINX_CONF_LOCATION='\/config\/nginx\/site-confs\/default.conf'/d" .env
9 |
10 | mkdir logs
11 | chmod -R 777 logs
12 |
--------------------------------------------------------------------------------
/auctions/static/admin/img/README.txt:
--------------------------------------------------------------------------------
1 | All icons are taken from Font Awesome (http://fontawesome.io/) project.
2 | The Font Awesome font is licensed under the SIL OFL 1.1:
3 | - https://scripts.sil.org/OFL
4 |
5 | SVG icons source: https://github.com/encharm/Font-Awesome-SVG-PNG
6 | Font-Awesome-SVG-PNG is licensed under the MIT license (see file license
7 | in current folder).
8 |
--------------------------------------------------------------------------------
/auctions/static/admin/img/icon-addlink.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/auctions/static/admin/img/tooltag-add.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/fishauctions/urls.py:
--------------------------------------------------------------------------------
1 | from django.contrib import admin
2 | from django.urls import include, path
3 |
4 | urlpatterns = [
5 | path("", include("auctions.urls")),
6 | path("summernote/", include("django_summernote.urls")),
7 | path("admin/", admin.site.urls),
8 | path("", include("allauth.urls")),
9 | # path("__debug__/", include(debug_toolbar.urls)),
10 | ]
11 |
--------------------------------------------------------------------------------
/auctions/migrations/0210_merge_20251123_1159.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 5.2.8 on 2025-11-23 16:59
2 |
3 | from django.db import migrations
4 |
5 |
6 | class Migration(migrations.Migration):
7 | dependencies = [
8 | ("auctions", "0207_alter_userdata_preferred_currency"),
9 | ("auctions", "0209_add_no_more_refunds_field"),
10 | ]
11 |
12 | operations = []
13 |
--------------------------------------------------------------------------------
/auctions/migrations/0198_merge_20251104_1334.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 5.2.7 on 2025-11-04 18:34
2 |
3 | from django.db import migrations
4 |
5 |
6 | class Migration(migrations.Migration):
7 | dependencies = [
8 | ("auctions", "0190_auction_alternative_split_label"),
9 | ("auctions", "0197_alter_invoiceadjustment_adjustment_type"),
10 | ]
11 |
12 | operations = []
13 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/jquery.init.js:
--------------------------------------------------------------------------------
1 | /*global jQuery:false*/
2 | 'use strict';
3 | /* Puts the included jQuery into our own namespace using noConflict and passing
4 | * it 'true'. This ensures that the included jQuery doesn't pollute the global
5 | * namespace (i.e. this preserves pre-existing values for both window.$ and
6 | * window.jQuery).
7 | */
8 | window.django = {jQuery: jQuery.noConflict(true)};
9 |
--------------------------------------------------------------------------------
/auctions/templates/user_username.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 |
3 | {% load i18n %}
4 | {% load crispy_forms_tags %}
5 |
6 | {% block title %}Change username{% endblock %}
7 |
8 | {% block extra_js %}
9 |
10 | {% endblock %}
11 | {% block content %}
12 | {% include "preferences_ribbon.html" %}
13 |
14 | {% crispy form form.helper %}
15 | {% endblock %}
16 |
--------------------------------------------------------------------------------
/auctions/static/admin/img/icon-changelink.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/auctions/templates/404.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 | {% load static %}
3 | {% block body_class %}template-404{% endblock %}
4 |
5 | {% block content %}
6 |
Page not found
7 |
I know it's burried here somewhere!
8 |
9 | Just gotta find it...
10 | {% endblock %}
11 |
--------------------------------------------------------------------------------
/auctions/static/admin/img/icon-deletelink.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/auctions/templates/tos_wrapper.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 | {% block title %}Terms and conditions{% endblock %}
3 | {% block extra_js %}{% endblock %}
4 | {% block content %}
5 | {# DO NOT UPDATE THIS FILE #}
6 | {# instead, place a file called tos.html in the same folder as the .env file, requirements.txt, update.sh, etc. This file will be automatically loaded #}
7 | {{ tos_content | safe }}
8 | {% endblock %}
9 |
--------------------------------------------------------------------------------
/auctions/templates/ad.html:
--------------------------------------------------------------------------------
1 | {% if show_ads %}
2 |
3 |
4 |
5 |
16 | {% endif %}
17 |
--------------------------------------------------------------------------------
/auctions/static/admin/img/icon-yes.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/fishauctions/wsgi.py:
--------------------------------------------------------------------------------
1 | """
2 | WSGI config for fishauctions project.
3 |
4 | It exposes the WSGI callable as a module-level variable named ``application``.
5 |
6 | For more information on this file, see
7 | https://docs.djangoproject.com/en/3.1/howto/deployment/wsgi/
8 | """
9 |
10 | import os
11 |
12 | from django.core.wsgi import get_wsgi_application
13 |
14 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "fishauctions.settings")
15 |
16 | application = get_wsgi_application()
17 |
--------------------------------------------------------------------------------
/auctions/static/admin/img/search.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/auctions/templates/account/verification_sent.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 |
3 | {% load i18n %}
4 |
5 | {% block head_title %}{% trans "Verify Your E-mail Address" %}{% endblock %}
6 |
7 | {% block content %}
8 |
{% trans "Verify Your E-mail Address" %}
9 |
{% blocktrans %}We have sent an e-mail to you for verification. Follow the link provided to finalize the signup process. Please contact us if you do not receive it within a few minutes.{% endblocktrans %}
7 |
8 | An error occurred while trying to load this page.
9 |
10 |
This isn't your fault
11 |
These types of issues are usually fixed within a day or two
12 |
This issue will automatically be reported, you don't need to do anything
13 |
14 |
15 |
16 | rrasco / Reef Central had it worse than this, though
17 | {% endblock %}
18 |
--------------------------------------------------------------------------------
/auctions/templates/recommended_lots.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 | {% block title %}Recommended lots{% endblock %}
3 | {% load static %}
4 | {% block content %}
5 | Searching for recommended lots...
6 | {% endblock %}
7 | {% block extra_js %}
8 |
9 |
21 | {% endblock %}
22 |
--------------------------------------------------------------------------------
/auctions/static/admin/img/icon-clock.svg:
--------------------------------------------------------------------------------
1 |
10 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/az.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/az",[],function(){return{inputTooLong:function(n){return n.input.length-n.maximum+" simvol silin"},inputTooShort:function(n){return n.minimum-n.input.length+" simvol daxil edin"},loadingMore:function(){return"Daha çox nəticə yüklənir…"},maximumSelected:function(n){return"Sadəcə "+n.maximum+" element seçə bilərsiniz"},noResults:function(){return"Nəticə tapılmadı"},searching:function(){return"Axtarılır…"},removeAllItems:function(){return"Bütün elementləri sil"}}}),n.define,n.require}();
4 |
--------------------------------------------------------------------------------
/auctions/static/autocomplete_light/i18n/zh-TW.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.1.0-rc.0 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 | var dalLoadLanguage=function(n){var e;(e=n&&n.fn&&n.fn.select2&&n.fn.select2.amd?n.fn.select2.amd:e).define("select2/i18n/zh-TW",[],function(){return{inputTooLong:function(n){return"請刪掉"+(n.input.length-n.maximum)+"個字元"},inputTooShort:function(n){return"請再輸入"+(n.minimum-n.input.length)+"個字元"},loadingMore:function(){return"載入中…"},maximumSelected:function(n){return"你只能選擇最多"+n.maximum+"項"},noResults:function(){return"沒有找到相符的項目"},searching:function(){return"搜尋中…"},removeAllItems:function(){return"刪除所有項目"}}}),e.define,e.require},event=new CustomEvent("dal-language-loaded",{lang:"zh-TW"});document.dispatchEvent(event);
3 |
--------------------------------------------------------------------------------
/auctions/templates/account/email/email_confirmation_message.txt:
--------------------------------------------------------------------------------
1 | {% load account %}{% user_display user as user_display %}{% load i18n %}{% autoescape off %}{% blocktrans with site_name=current_site.name site_domain=current_site.domain %}Hello from {{ site_name }}!
2 |
3 | You're receiving this e-mail because user {{ user_display }} has given yours as an e-mail address to connect their account.
4 |
5 | Just to make sure you're not up to anything fishy, we need to confirm that this is your address. Please go here: <{{ activate_url }}>
6 | {% endblocktrans %}
7 | {% blocktrans with site_name=current_site.name site_domain=current_site.domain %}Thank you from {{ site_name }}!
8 | {{ site_domain }}{% endblocktrans %}
9 | {% endautoescape %}
10 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/ko.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/ko",[],function(){return{errorLoading:function(){return"결과를 불러올 수 없습니다."},inputTooLong:function(n){return"너무 깁니다. "+(n.input.length-n.maximum)+" 글자 지워주세요."},inputTooShort:function(n){return"너무 짧습니다. "+(n.minimum-n.input.length)+" 글자 더 입력해주세요."},loadingMore:function(){return"불러오는 중…"},maximumSelected:function(n){return"최대 "+n.maximum+"개까지만 선택 가능합니다."},noResults:function(){return"결과가 없습니다."},searching:function(){return"검색 중…"},removeAllItems:function(){return"모든 항목 삭제"}}}),n.define,n.require}();
4 |
--------------------------------------------------------------------------------
/auctions/migrations/0212_invoicepayment_receipt_number.py:
--------------------------------------------------------------------------------
1 | # Generated manually for Square receipt number field
2 | from django.db import migrations, models
3 |
4 |
5 | class Migration(migrations.Migration):
6 | dependencies = [
7 | ("auctions", "0211_update_email_templates_reply_to_note"),
8 | ]
9 |
10 | operations = [
11 | migrations.AddField(
12 | model_name="invoicepayment",
13 | name="receipt_number",
14 | field=models.CharField(
15 | blank=True,
16 | db_index=True,
17 | help_text="Short receipt number (4 chars for Square)",
18 | max_length=10,
19 | null=True,
20 | ),
21 | ),
22 | ]
23 |
--------------------------------------------------------------------------------
/db-init/grant-permissions-existing-db.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # Script to grant test database permissions on existing development systems
3 | # Run this if you're getting "Access denied for user 'mysqluser'@'%' to database 'test_auctions'"
4 |
5 | echo "Granting test database permissions to mysqluser..."
6 | docker exec -it db mariadb -uroot -p${DATABASE_ROOT_PASSWORD:-secret} -e "
7 | GRANT CREATE, DROP ON *.* TO 'mysqluser'@'%';
8 | GRANT ALL PRIVILEGES ON \`test_%\`.* TO 'mysqluser'@'%';
9 | FLUSH PRIVILEGES;
10 | "
11 |
12 | if [ $? -eq 0 ]; then
13 | echo "✓ Permissions granted successfully"
14 | else
15 | echo "✗ Failed to grant permissions. Make sure the db container is running and DATABASE_ROOT_PASSWORD is correct."
16 | exit 1
17 | fi
18 |
--------------------------------------------------------------------------------
/auctions/management/commands/purge_bot_users.py:
--------------------------------------------------------------------------------
1 | import logging
2 |
3 | from allauth.account.models import EmailAddress
4 | from django.core.management.base import BaseCommand
5 | from django.utils import timezone
6 |
7 | logger = logging.getLogger(__name__)
8 |
9 |
10 | class Command(BaseCommand):
11 | help = "Remove users with no verified email"
12 |
13 | def handle(self, *args, **options):
14 | emails = EmailAddress.objects.filter(verified=False, primary=True)
15 | for email in emails:
16 | time_difference = email.user.userdata.last_activity - email.user.date_joined
17 | if time_difference < timezone.timedelta(hours=24):
18 | logger.info("Deleting %s", email.user)
19 | email.user.delete()
20 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/vi.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/vi",[],function(){return{inputTooLong:function(n){return"Vui lòng xóa bớt "+(n.input.length-n.maximum)+" ký tự"},inputTooShort:function(n){return"Vui lòng nhập thêm từ "+(n.minimum-n.input.length)+" ký tự trở lên"},loadingMore:function(){return"Đang lấy thêm kết quả…"},maximumSelected:function(n){return"Chỉ có thể chọn được "+n.maximum+" lựa chọn"},noResults:function(){return"Không tìm thấy kết quả"},searching:function(){return"Đang tìm…"},removeAllItems:function(){return"Xóa tất cả các mục"}}}),n.define,n.require}();
4 |
--------------------------------------------------------------------------------
/auctions/migrations/0148_userdata_push_notifications_when_lots_sell.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 5.0.8 on 2024-09-14 00:53
2 |
3 | from django.db import migrations, models
4 |
5 |
6 | class Migration(migrations.Migration):
7 | dependencies = [
8 | ("auctions", "0147_auction_message_users_when_lots_sell_and_more"),
9 | ]
10 |
11 | operations = [
12 | migrations.AddField(
13 | model_name="userdata",
14 | name="push_notifications_when_lots_sell",
15 | field=models.BooleanField(
16 | blank=True,
17 | default=False,
18 | help_text="For in-person auctions, get a notification when bidding starts on a lot that you've watched",
19 | ),
20 | ),
21 | ]
22 |
--------------------------------------------------------------------------------
/auctions/migrations/0155_auction_label_print_fields.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 5.1 on 2024-10-11 19:16
2 |
3 | from django.db import migrations, models
4 |
5 |
6 | class Migration(migrations.Migration):
7 | dependencies = [
8 | ("auctions", "0154_remove_auction_notes_remove_auction_notes_rendered_and_more"),
9 | ]
10 |
11 | operations = [
12 | migrations.AddField(
13 | model_name="auction",
14 | name="label_print_fields",
15 | field=models.CharField(
16 | blank=True,
17 | default="lot_name,min_bid_label,buy_now_label,quantity_label,seller_name_label,donation_label",
18 | max_length=1000,
19 | null=True,
20 | ),
21 | ),
22 | ]
23 |
--------------------------------------------------------------------------------
/auctions/migrations/0177_alter_pageview_date_start_alter_pageview_session_id.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 5.1.6 on 2025-03-19 17:21
2 |
3 | from django.db import migrations, models
4 |
5 |
6 | class Migration(migrations.Migration):
7 | dependencies = [
8 | ("auctions", "0176_lot_admin_validated"),
9 | ]
10 |
11 | operations = [
12 | migrations.AlterField(
13 | model_name="pageview",
14 | name="date_start",
15 | field=models.DateTimeField(auto_now_add=True, db_index=True),
16 | ),
17 | migrations.AlterField(
18 | model_name="pageview",
19 | name="session_id",
20 | field=models.CharField(blank=True, db_index=True, max_length=600, null=True),
21 | ),
22 | ]
23 |
--------------------------------------------------------------------------------
/auctions/static/autocomplete_light/i18n/zh-CN.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.1.0-rc.0 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 | var dalLoadLanguage=function(n){var e;(e=n&&n.fn&&n.fn.select2&&n.fn.select2.amd?n.fn.select2.amd:e).define("select2/i18n/zh-CN",[],function(){return{errorLoading:function(){return"无法载入结果。"},inputTooLong:function(n){return"请删除"+(n.input.length-n.maximum)+"个字符"},inputTooShort:function(n){return"请再输入至少"+(n.minimum-n.input.length)+"个字符"},loadingMore:function(){return"载入更多结果…"},maximumSelected:function(n){return"最多只能选择"+n.maximum+"个项目"},noResults:function(){return"未找到结果"},searching:function(){return"搜索中…"},removeAllItems:function(){return"删除所有项目"}}}),e.define,e.require},event=new CustomEvent("dal-language-loaded",{lang:"zh-CN"});document.dispatchEvent(event);
3 |
--------------------------------------------------------------------------------
/auctions/migrations/0143_auction_extra_promo_link_auction_extra_promo_text.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 5.0.8 on 2024-08-25 18:30
2 |
3 | from django.db import migrations, models
4 |
5 |
6 | class Migration(migrations.Migration):
7 | dependencies = [
8 | ("auctions", "0142_club_date_contacted_for_in_person_auctions"),
9 | ]
10 |
11 | operations = [
12 | migrations.AddField(
13 | model_name="auction",
14 | name="extra_promo_link",
15 | field=models.URLField(blank=True, null=True),
16 | ),
17 | migrations.AddField(
18 | model_name="auction",
19 | name="extra_promo_text",
20 | field=models.CharField(blank=True, default="", max_length=50, null=True),
21 | ),
22 | ]
23 |
--------------------------------------------------------------------------------
/auctions/migrations/0190_auction_paypal_email_address.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 5.2.5 on 2025-10-24 18:11
2 |
3 | from django.db import migrations, models
4 |
5 |
6 | class Migration(migrations.Migration):
7 | dependencies = [
8 | ("auctions", "0189_auctiontos_add_to_calendar_alter_club_abbreviation_and_more"),
9 | ]
10 |
11 | operations = [
12 | migrations.AddField(
13 | model_name="auction",
14 | name="paypal_email_address",
15 | field=models.EmailField(
16 | blank=True,
17 | help_text="To enable PayPal payments, enter the email address associated with your PayPal account",
18 | max_length=255,
19 | null=True,
20 | ),
21 | ),
22 | ]
23 |
--------------------------------------------------------------------------------
/auctions/static/admin/css/unusable_password_field.css:
--------------------------------------------------------------------------------
1 | /* Hide warnings fields if usable password is selected */
2 | form:has(#id_usable_password input[value="true"]:checked) .messagelist {
3 | display: none;
4 | }
5 |
6 | /* Hide password fields if unusable password is selected */
7 | form:has(#id_usable_password input[value="false"]:checked) .field-password1,
8 | form:has(#id_usable_password input[value="false"]:checked) .field-password2 {
9 | display: none;
10 | }
11 |
12 | /* Select appropriate submit button */
13 | form:has(#id_usable_password input[value="true"]:checked) input[type="submit"].unset-password {
14 | display: none;
15 | }
16 |
17 | form:has(#id_usable_password input[value="false"]:checked) input[type="submit"].set-password {
18 | display: none;
19 | }
20 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/tk.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/tk",[],function(){return{errorLoading:function(){return"Netije ýüklenmedi."},inputTooLong:function(e){return e.input.length-e.maximum+" harp bozuň."},inputTooShort:function(e){return"Ýene-de iň az "+(e.minimum-e.input.length)+" harp ýazyň."},loadingMore:function(){return"Köpräk netije görkezilýär…"},maximumSelected:function(e){return"Diňe "+e.maximum+" sanysyny saýlaň."},noResults:function(){return"Netije tapylmady."},searching:function(){return"Gözlenýär…"},removeAllItems:function(){return"Remove all items"}}}),e.define,e.require}();
4 |
--------------------------------------------------------------------------------
/auctions/migrations/0203_alter_userdata_distance_unit.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 5.0.6 on 2025-11-05 16:09
2 |
3 | from django.db import migrations, models
4 |
5 |
6 | class Migration(migrations.Migration):
7 | dependencies = [
8 | ("auctions", "0202_set_distance_unit_for_canadian_users"),
9 | ]
10 |
11 | operations = [
12 | migrations.AlterField(
13 | model_name="userdata",
14 | name="distance_unit",
15 | field=models.CharField(
16 | choices=[("mi", "Miles"), ("km", "Kilometers")],
17 | default="mi",
18 | help_text="Unit for displaying distances",
19 | max_length=10,
20 | verbose_name="Distance unit",
21 | ),
22 | ),
23 | ]
24 |
--------------------------------------------------------------------------------
/manage.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | """Django's command-line utility for administrative tasks."""
3 |
4 | import os
5 | import sys
6 |
7 |
8 | def main():
9 | """Run administrative tasks."""
10 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "fishauctions.settings")
11 | try:
12 | from django.core.management import execute_from_command_line
13 | except ImportError as exc:
14 | msg = (
15 | "Couldn't import Django. Are you sure it's installed and "
16 | "available on your PYTHONPATH environment variable? Did you "
17 | "forget to activate a virtual environment?"
18 | )
19 | raise ImportError(msg) from exc
20 | execute_from_command_line(sys.argv)
21 |
22 |
23 | if __name__ == "__main__":
24 | main()
25 |
--------------------------------------------------------------------------------
/auctions/migrations/0135_lot_partial_refund_percent.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 5.0.3 on 2024-05-08 00:03
2 |
3 | import django.core.validators
4 | from django.db import migrations, models
5 |
6 |
7 | class Migration(migrations.Migration):
8 | dependencies = [
9 | ("auctions", "0134_remove_invoice_adjustment_and_more"),
10 | ]
11 |
12 | operations = [
13 | migrations.AddField(
14 | model_name="lot",
15 | name="partial_refund_percent",
16 | field=models.IntegerField(
17 | default=0,
18 | validators=[
19 | django.core.validators.MinValueValidator(0),
20 | django.core.validators.MaxValueValidator(100),
21 | ],
22 | ),
23 | ),
24 | ]
25 |
--------------------------------------------------------------------------------
/auctions/migrations/0166_auction_use_seller_dash_lot_numbering_and_more.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 5.1.1 on 2025-02-18 16:30
2 |
3 | from django.db import migrations, models
4 |
5 |
6 | class Migration(migrations.Migration):
7 | dependencies = [
8 | ("auctions", "0165_alter_auction_summernote_description_and_more"),
9 | ]
10 |
11 | operations = [
12 | migrations.AddField(
13 | model_name="auction",
14 | name="use_seller_dash_lot_numbering",
15 | field=models.BooleanField(blank=True, default=True),
16 | ),
17 | migrations.AddField(
18 | model_name="lot",
19 | name="lot_number_int",
20 | field=models.IntegerField(blank=True, null=True, verbose_name="Lot number"),
21 | ),
22 | ]
23 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/id.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/id",[],function(){return{errorLoading:function(){return"Data tidak boleh diambil."},inputTooLong:function(n){return"Hapuskan "+(n.input.length-n.maximum)+" huruf"},inputTooShort:function(n){return"Masukkan "+(n.minimum-n.input.length)+" huruf lagi"},loadingMore:function(){return"Mengambil data…"},maximumSelected:function(n){return"Anda hanya dapat memilih "+n.maximum+" pilihan"},noResults:function(){return"Tidak ada data yang sesuai"},searching:function(){return"Mencari…"},removeAllItems:function(){return"Hapus semua item"}}}),n.define,n.require}();
4 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/tr.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/tr",[],function(){return{errorLoading:function(){return"Sonuç yüklenemedi"},inputTooLong:function(n){return n.input.length-n.maximum+" karakter daha girmelisiniz"},inputTooShort:function(n){return"En az "+(n.minimum-n.input.length)+" karakter daha girmelisiniz"},loadingMore:function(){return"Daha fazla…"},maximumSelected:function(n){return"Sadece "+n.maximum+" seçim yapabilirsiniz"},noResults:function(){return"Sonuç bulunamadı"},searching:function(){return"Aranıyor…"},removeAllItems:function(){return"Tüm öğeleri kaldır"}}}),n.define,n.require}();
4 |
--------------------------------------------------------------------------------
/auctions/static/autocomplete_light/i18n/ja.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.1.0-rc.0 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 | var dalLoadLanguage=function(n){var e;(e=n&&n.fn&&n.fn.select2&&n.fn.select2.amd?n.fn.select2.amd:e).define("select2/i18n/ja",[],function(){return{errorLoading:function(){return"結果が読み込まれませんでした"},inputTooLong:function(n){return n.input.length-n.maximum+" 文字を削除してください"},inputTooShort:function(n){return"少なくとも "+(n.minimum-n.input.length)+" 文字を入力してください"},loadingMore:function(){return"読み込み中…"},maximumSelected:function(n){return n.maximum+" 件しか選択できません"},noResults:function(){return"対象が見つかりません"},searching:function(){return"検索しています…"},removeAllItems:function(){return"すべてのアイテムを削除"}}}),e.define,e.require},event=new CustomEvent("dal-language-loaded",{lang:"ja"});document.dispatchEvent(event);
3 |
--------------------------------------------------------------------------------
/fishauctions/asgi_old.py:
--------------------------------------------------------------------------------
1 | """
2 | ASGI config for fishauctions project.
3 |
4 | It exposes the ASGI callable as a module-level variable named ``application``.
5 |
6 | For more information on this file, see
7 | https://docs.djangoproject.com/en/3.1/howto/deployment/asgi/
8 | """
9 |
10 | import os
11 |
12 | from channels.auth import AuthMiddlewareStack
13 | from channels.routing import ProtocolTypeRouter, URLRouter
14 | from django.core.asgi import get_asgi_application
15 |
16 | import auctions.routing
17 |
18 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "fishauctions.settings")
19 |
20 | application = ProtocolTypeRouter(
21 | {
22 | "http": get_asgi_application(),
23 | "websocket": AuthMiddlewareStack(URLRouter(auctions.routing.websocket_urlpatterns)),
24 | }
25 | )
26 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/ar.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/ar",[],function(){return{errorLoading:function(){return"لا يمكن تحميل النتائج"},inputTooLong:function(n){return"الرجاء حذف "+(n.input.length-n.maximum)+" عناصر"},inputTooShort:function(n){return"الرجاء إضافة "+(n.minimum-n.input.length)+" عناصر"},loadingMore:function(){return"جاري تحميل نتائج إضافية..."},maximumSelected:function(n){return"تستطيع إختيار "+n.maximum+" بنود فقط"},noResults:function(){return"لم يتم العثور على أي نتائج"},searching:function(){return"جاري البحث…"},removeAllItems:function(){return"قم بإزالة كل العناصر"}}}),n.define,n.require}();
4 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/th.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/th",[],function(){return{errorLoading:function(){return"ไม่สามารถค้นข้อมูลได้"},inputTooLong:function(n){return"โปรดลบออก "+(n.input.length-n.maximum)+" ตัวอักษร"},inputTooShort:function(n){return"โปรดพิมพ์เพิ่มอีก "+(n.minimum-n.input.length)+" ตัวอักษร"},loadingMore:function(){return"กำลังค้นข้อมูลเพิ่ม…"},maximumSelected:function(n){return"คุณสามารถเลือกได้ไม่เกิน "+n.maximum+" รายการ"},noResults:function(){return"ไม่พบข้อมูล"},searching:function(){return"กำลังค้นข้อมูล…"},removeAllItems:function(){return"ลบรายการทั้งหมด"}}}),n.define,n.require}();
4 |
--------------------------------------------------------------------------------
/auctions/migrations/0165_alter_auction_summernote_description_and_more.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 5.1.1 on 2024-11-15 19:57
2 |
3 | from django.db import migrations, models
4 |
5 |
6 | class Migration(migrations.Migration):
7 | dependencies = [
8 | ("auctions", "0164_auction_force_donation_threshold"),
9 | ]
10 |
11 | operations = [
12 | migrations.AlterField(
13 | model_name="auction",
14 | name="summernote_description",
15 | field=models.TextField(blank=True, default="", verbose_name="Rules"),
16 | ),
17 | migrations.AlterField(
18 | model_name="lot",
19 | name="summernote_description",
20 | field=models.TextField(blank=True, default="", verbose_name="Description"),
21 | ),
22 | ]
23 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/nb.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/nb",[],function(){return{errorLoading:function(){return"Kunne ikke hente resultater."},inputTooLong:function(e){return"Vennligst fjern "+(e.input.length-e.maximum)+" tegn"},inputTooShort:function(e){return"Vennligst skriv inn "+(e.minimum-e.input.length)+" tegn til"},loadingMore:function(){return"Laster flere resultater…"},maximumSelected:function(e){return"Du kan velge maks "+e.maximum+" elementer"},noResults:function(){return"Ingen treff"},searching:function(){return"Søker…"},removeAllItems:function(){return"Fjern alle elementer"}}}),e.define,e.require}();
4 |
--------------------------------------------------------------------------------
/auctions/static/autocomplete_light/i18n/az.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.1.0-rc.0 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 | var dalLoadLanguage=function(n){var e;(e=n&&n.fn&&n.fn.select2&&n.fn.select2.amd?n.fn.select2.amd:e).define("select2/i18n/az",[],function(){return{inputTooLong:function(n){return n.input.length-n.maximum+" simvol silin"},inputTooShort:function(n){return n.minimum-n.input.length+" simvol daxil edin"},loadingMore:function(){return"Daha çox nəticə yüklənir…"},maximumSelected:function(n){return"Sadəcə "+n.maximum+" element seçə bilərsiniz"},noResults:function(){return"Nəticə tapılmadı"},searching:function(){return"Axtarılır…"},removeAllItems:function(){return"Bütün elementləri sil"}}}),e.define,e.require},event=new CustomEvent("dal-language-loaded",{lang:"az"});document.dispatchEvent(event);
3 |
--------------------------------------------------------------------------------
/auctions/static/admin/img/icon-hidelink.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/km.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/km",[],function(){return{errorLoading:function(){return"មិនអាចទាញយកទិន្នន័យ"},inputTooLong:function(n){return"សូមលុបចេញ "+(n.input.length-n.maximum)+" អក្សរ"},inputTooShort:function(n){return"សូមបញ្ចូល"+(n.minimum-n.input.length)+" អក្សរ រឺ ច្រើនជាងនេះ"},loadingMore:function(){return"កំពុងទាញយកទិន្នន័យបន្ថែម..."},maximumSelected:function(n){return"អ្នកអាចជ្រើសរើសបានតែ "+n.maximum+" ជម្រើសប៉ុណ្ណោះ"},noResults:function(){return"មិនមានលទ្ធផល"},searching:function(){return"កំពុងស្វែងរក..."},removeAllItems:function(){return"លុបធាតុទាំងអស់"}}}),n.define,n.require}();
4 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/sv.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/sv",[],function(){return{errorLoading:function(){return"Resultat kunde inte laddas."},inputTooLong:function(n){return"Vänligen sudda ut "+(n.input.length-n.maximum)+" tecken"},inputTooShort:function(n){return"Vänligen skriv in "+(n.minimum-n.input.length)+" eller fler tecken"},loadingMore:function(){return"Laddar fler resultat…"},maximumSelected:function(n){return"Du kan max välja "+n.maximum+" element"},noResults:function(){return"Inga träffar"},searching:function(){return"Söker…"},removeAllItems:function(){return"Ta bort alla objekt"}}}),n.define,n.require}();
4 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/is.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/is",[],function(){return{inputTooLong:function(n){var t=n.input.length-n.maximum,e="Vinsamlegast styttið texta um "+t+" staf";return t<=1?e:e+"i"},inputTooShort:function(n){var t=n.minimum-n.input.length,e="Vinsamlegast skrifið "+t+" staf";return t>1&&(e+="i"),e+=" í viðbót"},loadingMore:function(){return"Sæki fleiri niðurstöður…"},maximumSelected:function(n){return"Þú getur aðeins valið "+n.maximum+" atriði"},noResults:function(){return"Ekkert fannst"},searching:function(){return"Leita…"},removeAllItems:function(){return"Fjarlægðu öll atriði"}}}),n.define,n.require}();
4 |
--------------------------------------------------------------------------------
/auctions/static/autocomplete_light/i18n/ko.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.1.0-rc.0 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 | var dalLoadLanguage=function(n){var e;(e=n&&n.fn&&n.fn.select2&&n.fn.select2.amd?n.fn.select2.amd:e).define("select2/i18n/ko",[],function(){return{errorLoading:function(){return"결과를 불러올 수 없습니다."},inputTooLong:function(n){return"너무 깁니다. "+(n.input.length-n.maximum)+" 글자 지워주세요."},inputTooShort:function(n){return"너무 짧습니다. "+(n.minimum-n.input.length)+" 글자 더 입력해주세요."},loadingMore:function(){return"불러오는 중…"},maximumSelected:function(n){return"최대 "+n.maximum+"개까지만 선택 가능합니다."},noResults:function(){return"결과가 없습니다."},searching:function(){return"검색 중…"},removeAllItems:function(){return"모든 항목 삭제"}}}),e.define,e.require},event=new CustomEvent("dal-language-loaded",{lang:"ko"});document.dispatchEvent(event);
3 |
--------------------------------------------------------------------------------
/auctions/migrations/0201_userdata_distance_unit.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 5.0.6 on 2025-11-05 11:30
2 |
3 | from django.db import migrations, models
4 |
5 |
6 | class Migration(migrations.Migration):
7 | dependencies = [
8 | ("auctions", "0200_auction_google_drive_link_auction_last_sync_time"),
9 | ]
10 |
11 | operations = [
12 | migrations.AddField(
13 | model_name="userdata",
14 | name="distance_unit",
15 | field=models.CharField(
16 | blank=True,
17 | choices=[("mi", "Miles"), ("km", "Kilometers")],
18 | default="mi",
19 | help_text="Unit for displaying distances",
20 | max_length=10,
21 | verbose_name="Distance unit",
22 | ),
23 | ),
24 | ]
25 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/fi.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/fi",[],function(){return{errorLoading:function(){return"Tuloksia ei saatu ladattua."},inputTooLong:function(n){return"Ole hyvä ja anna "+(n.input.length-n.maximum)+" merkkiä vähemmän"},inputTooShort:function(n){return"Ole hyvä ja anna "+(n.minimum-n.input.length)+" merkkiä lisää"},loadingMore:function(){return"Ladataan lisää tuloksia…"},maximumSelected:function(n){return"Voit valita ainoastaan "+n.maximum+" kpl"},noResults:function(){return"Ei tuloksia"},searching:function(){return"Haetaan…"},removeAllItems:function(){return"Poista kaikki kohteet"}}}),n.define,n.require}();
4 |
--------------------------------------------------------------------------------
/auctions/migrations/0171_alter_auction_message_users_when_lots_sell.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 5.1.1 on 2025-03-01 16:49
2 |
3 | from django.db import migrations, models
4 |
5 |
6 | class Migration(migrations.Migration):
7 | dependencies = [
8 | ("auctions", "0170_auction_use_donation_field_and_more"),
9 | ]
10 |
11 | operations = [
12 | migrations.AlterField(
13 | model_name="auction",
14 | name="message_users_when_lots_sell",
15 | field=models.BooleanField(
16 | blank=True,
17 | default=True,
18 | help_text="Recommended if you are recording winners as lots sell. When you enter a lot number on the set lot winners screen, send a notification to any users watching that lot",
19 | ),
20 | ),
21 | ]
22 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/et.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/et",[],function(){return{inputTooLong:function(e){var n=e.input.length-e.maximum,t="Sisesta "+n+" täht";return 1!=n&&(t+="e"),t+=" vähem"},inputTooShort:function(e){var n=e.minimum-e.input.length,t="Sisesta "+n+" täht";return 1!=n&&(t+="e"),t+=" rohkem"},loadingMore:function(){return"Laen tulemusi…"},maximumSelected:function(e){var n="Saad vaid "+e.maximum+" tulemus";return 1==e.maximum?n+="e":n+="t",n+=" valida"},noResults:function(){return"Tulemused puuduvad"},searching:function(){return"Otsin…"},removeAllItems:function(){return"Eemalda kõik esemed"}}}),e.define,e.require}();
4 |
--------------------------------------------------------------------------------
/auctions/migrations/0204_userdata_is_trusted.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 5.0.6 on 2025-11-08 17:45
2 |
3 | from django.db import migrations, models
4 |
5 |
6 | def set_existing_users_trusted(apps, schema_editor):
7 | """Set all existing users to trusted"""
8 | UserData = apps.get_model("auctions", "UserData")
9 | UserData.objects.all().update(is_trusted=True)
10 |
11 |
12 | class Migration(migrations.Migration):
13 | dependencies = [
14 | ("auctions", "0203_alter_userdata_distance_unit"),
15 | ]
16 |
17 | operations = [
18 | migrations.AddField(
19 | model_name="userdata",
20 | name="is_trusted",
21 | field=models.BooleanField(default=True),
22 | ),
23 | migrations.RunPython(set_existing_users_trusted, migrations.RunPython.noop),
24 | ]
25 |
--------------------------------------------------------------------------------
/auctions/migrations/0163_alter_auction_summernote_description_and_more.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 5.1.1 on 2024-11-13 15:58
2 |
3 | from django.db import migrations, models
4 |
5 |
6 | class Migration(migrations.Migration):
7 | dependencies = [
8 | ("auctions", "0162_alter_auction_buy_now_and_more"),
9 | ]
10 |
11 | operations = [
12 | migrations.AlterField(
13 | model_name="auction",
14 | name="summernote_description",
15 | field=models.CharField(blank=True, default="", max_length=10000, verbose_name="Rules"),
16 | ),
17 | migrations.AlterField(
18 | model_name="lot",
19 | name="summernote_description",
20 | field=models.CharField(blank=True, default="", max_length=10000, verbose_name="Description"),
21 | ),
22 | ]
23 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/hu.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/hu",[],function(){return{errorLoading:function(){return"Az eredmények betöltése nem sikerült."},inputTooLong:function(e){return"Túl hosszú. "+(e.input.length-e.maximum)+" karakterrel több, mint kellene."},inputTooShort:function(e){return"Túl rövid. Még "+(e.minimum-e.input.length)+" karakter hiányzik."},loadingMore:function(){return"Töltés…"},maximumSelected:function(e){return"Csak "+e.maximum+" elemet lehet kiválasztani."},noResults:function(){return"Nincs találat."},searching:function(){return"Keresés…"},removeAllItems:function(){return"Távolítson el minden elemet"}}}),e.define,e.require}();
4 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/ms.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/ms",[],function(){return{errorLoading:function(){return"Keputusan tidak berjaya dimuatkan."},inputTooLong:function(n){return"Sila hapuskan "+(n.input.length-n.maximum)+" aksara"},inputTooShort:function(n){return"Sila masukkan "+(n.minimum-n.input.length)+" atau lebih aksara"},loadingMore:function(){return"Sedang memuatkan keputusan…"},maximumSelected:function(n){return"Anda hanya boleh memilih "+n.maximum+" pilihan"},noResults:function(){return"Tiada padanan yang ditemui"},searching:function(){return"Mencari…"},removeAllItems:function(){return"Keluarkan semua item"}}}),n.define,n.require}();
4 |
--------------------------------------------------------------------------------
/auctions/static/autocomplete_light/i18n/vi.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.1.0-rc.0 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 | var dalLoadLanguage=function(n){var t;(t=n&&n.fn&&n.fn.select2&&n.fn.select2.amd?n.fn.select2.amd:t).define("select2/i18n/vi",[],function(){return{inputTooLong:function(n){return"Vui lòng xóa bớt "+(n.input.length-n.maximum)+" ký tự"},inputTooShort:function(n){return"Vui lòng nhập thêm từ "+(n.minimum-n.input.length)+" ký tự trở lên"},loadingMore:function(){return"Đang lấy thêm kết quả…"},maximumSelected:function(n){return"Chỉ có thể chọn được "+n.maximum+" lựa chọn"},noResults:function(){return"Không tìm thấy kết quả"},searching:function(){return"Đang tìm…"},removeAllItems:function(){return"Xóa tất cả các mục"}}}),t.define,t.require},event=new CustomEvent("dal-language-loaded",{lang:"vi"});document.dispatchEvent(event);
3 |
--------------------------------------------------------------------------------
/auctions/migrations/0190_auction_alternative_split_label.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 5.2.5 on 2025-11-03 14:06
2 |
3 | from django.db import migrations, models
4 |
5 |
6 | class Migration(migrations.Migration):
7 | dependencies = [
8 | ("auctions", "0189_auctiontos_add_to_calendar_alter_club_abbreviation_and_more"),
9 | ]
10 |
11 | operations = [
12 | migrations.AddField(
13 | model_name="auction",
14 | name="alternative_split_label",
15 | field=models.CharField(
16 | default="club member",
17 | help_text="Label to use instead of 'club member' for users with alternate fees (appears in invoices, user tables, etc.)",
18 | max_length=50,
19 | verbose_name="Alternative split label",
20 | ),
21 | ),
22 | ]
23 |
--------------------------------------------------------------------------------
/auctions/static/django-htmx.js:
--------------------------------------------------------------------------------
1 | {
2 | const data = document.currentScript.dataset;
3 | const isDebug = data.debug === "True";
4 |
5 | if (isDebug) {
6 | document.addEventListener("htmx:beforeOnLoad", function (event) {
7 | const xhr = event.detail.xhr;
8 | if (xhr.status == 500 || xhr.status == 404) {
9 | // Tell htmx to stop processing this response
10 | event.stopPropagation();
11 |
12 | document.children[0].innerHTML = xhr.response;
13 |
14 | // Run Django’s inline script
15 | // (1, eval) wtf - see https://stackoverflow.com/questions/9107240/1-evalthis-vs-evalthis-in-javascript
16 | (1, eval)(document.scripts[0].innerText);
17 | // Need to directly call Django’s onload function since browser won’t
18 | window.onload();
19 | }
20 | });
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/da.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/da",[],function(){return{errorLoading:function(){return"Resultaterne kunne ikke indlæses."},inputTooLong:function(e){return"Angiv venligst "+(e.input.length-e.maximum)+" tegn mindre"},inputTooShort:function(e){return"Angiv venligst "+(e.minimum-e.input.length)+" tegn mere"},loadingMore:function(){return"Indlæser flere resultater…"},maximumSelected:function(e){var n="Du kan kun vælge "+e.maximum+" emne";return 1!=e.maximum&&(n+="r"),n},noResults:function(){return"Ingen resultater fundet"},searching:function(){return"Søger…"},removeAllItems:function(){return"Fjern alle elementer"}}}),e.define,e.require}();
4 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/ka.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/ka",[],function(){return{errorLoading:function(){return"მონაცემების ჩატვირთვა შეუძლებელია."},inputTooLong:function(n){return"გთხოვთ აკრიფეთ "+(n.input.length-n.maximum)+" სიმბოლოთი ნაკლები"},inputTooShort:function(n){return"გთხოვთ აკრიფეთ "+(n.minimum-n.input.length)+" სიმბოლო ან მეტი"},loadingMore:function(){return"მონაცემების ჩატვირთვა…"},maximumSelected:function(n){return"თქვენ შეგიძლიათ აირჩიოთ არაუმეტეს "+n.maximum+" ელემენტი"},noResults:function(){return"რეზულტატი არ მოიძებნა"},searching:function(){return"ძიება…"},removeAllItems:function(){return"ამოიღე ყველა ელემენტი"}}}),n.define,n.require}();
4 |
--------------------------------------------------------------------------------
/nginx.prod.conf:
--------------------------------------------------------------------------------
1 | # redirect all traffic to https
2 | server {
3 | listen 80 default_server;
4 | listen [::]:80 default_server;
5 |
6 | location / {
7 | return 301 https://$host$request_uri;
8 | }
9 | }
10 |
11 | # main server block
12 | server {
13 | listen 443 ssl http2 default_server;
14 | listen [::]:443 ssl http2 default_server;
15 |
16 | server_name --;
17 |
18 | include /config/nginx/ssl.conf;
19 |
20 | location / {
21 | # block traffic with the wrong url (mostly traffic hitting the server IP)
22 | return 404;
23 | }
24 |
25 | }
26 |
27 | # fishauctions server, https only
28 | server {
29 | listen 443 ssl http2;
30 | listen [::]:443 ssl http2;
31 |
32 | server_name _;
33 |
34 | include /config/nginx/ssl.conf;
35 |
36 | include ./nginx_fishauctions.conf;
37 | }
38 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/bg.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/bg",[],function(){return{inputTooLong:function(n){var e=n.input.length-n.maximum,u="Моля въведете с "+e+" по-малко символ";return e>1&&(u+="a"),u},inputTooShort:function(n){var e=n.minimum-n.input.length,u="Моля въведете още "+e+" символ";return e>1&&(u+="a"),u},loadingMore:function(){return"Зареждат се още…"},maximumSelected:function(n){var e="Можете да направите до "+n.maximum+" ";return n.maximum>1?e+="избора":e+="избор",e},noResults:function(){return"Няма намерени съвпадения"},searching:function(){return"Търсене…"},removeAllItems:function(){return"Премахнете всички елементи"}}}),n.define,n.require}();
4 |
--------------------------------------------------------------------------------
/auctions/static/autocomplete_light/i18n/tk.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.1.0-rc.0 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 | var dalLoadLanguage=function(e){var n;(n=e&&e.fn&&e.fn.select2&&e.fn.select2.amd?e.fn.select2.amd:n).define("select2/i18n/tk",[],function(){return{errorLoading:function(){return"Netije ýüklenmedi."},inputTooLong:function(e){return e.input.length-e.maximum+" harp bozuň."},inputTooShort:function(e){return"Ýene-de iň az "+(e.minimum-e.input.length)+" harp ýazyň."},loadingMore:function(){return"Köpräk netije görkezilýär…"},maximumSelected:function(e){return"Diňe "+e.maximum+" sanysyny saýlaň."},noResults:function(){return"Netije tapylmady."},searching:function(){return"Gözlenýär…"},removeAllItems:function(){return"Remove all items"}}}),n.define,n.require},event=new CustomEvent("dal-language-loaded",{lang:"tk"});document.dispatchEvent(event);
3 |
--------------------------------------------------------------------------------
/auctions/static/django_htmx/django-htmx.js:
--------------------------------------------------------------------------------
1 | {
2 | const data = document.currentScript.dataset;
3 | const isDebug = data.debug === "True";
4 |
5 | if (isDebug) {
6 | document.addEventListener("htmx:beforeOnLoad", function (event) {
7 | const xhr = event.detail.xhr;
8 | if (xhr.status == 500 || xhr.status == 404) {
9 | // Tell htmx to stop processing this response
10 | event.stopPropagation();
11 |
12 | document.children[0].innerHTML = xhr.response;
13 |
14 | // Run Django’s inline script
15 | // (1, eval) wtf - see https://stackoverflow.com/questions/9107240/1-evalthis-vs-evalthis-in-javascript
16 | (1, eval)(document.scripts[0].innerText);
17 | // Need to directly call Django’s onload function since browser won’t
18 | window.onload();
19 | }
20 | });
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/auctions/migrations/0206_userdata_preferred_currency.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 5.0.6 on 2025-11-20 13:30
2 |
3 | from django.db import migrations, models
4 |
5 |
6 | class Migration(migrations.Migration):
7 | dependencies = [
8 | ("auctions", "0205_auction_cached_stats_auction_last_stats_update_and_more"),
9 | ]
10 |
11 | operations = [
12 | migrations.AddField(
13 | model_name="userdata",
14 | name="preferred_currency",
15 | field=models.CharField(
16 | choices=[("USD", "US Dollar ($)"), ("CAD", "Canadian Dollar ($)"), ("GBP", "British Pound (£)")],
17 | default="USD",
18 | help_text="Currency to display for prices",
19 | max_length=10,
20 | verbose_name="Preferred currency",
21 | ),
22 | ),
23 | ]
24 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/hy.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/hy",[],function(){return{errorLoading:function(){return"Արդյունքները հնարավոր չէ բեռնել։"},inputTooLong:function(n){return"Խնդրում ենք հեռացնել "+(n.input.length-n.maximum)+" նշան"},inputTooShort:function(n){return"Խնդրում ենք մուտքագրել "+(n.minimum-n.input.length)+" կամ ավել նշաններ"},loadingMore:function(){return"Բեռնվում են նոր արդյունքներ․․․"},maximumSelected:function(n){return"Դուք կարող եք ընտրել առավելագույնը "+n.maximum+" կետ"},noResults:function(){return"Արդյունքներ չեն գտնվել"},searching:function(){return"Որոնում․․․"},removeAllItems:function(){return"Հեռացնել բոլոր տարրերը"}}}),n.define,n.require}();
4 |
--------------------------------------------------------------------------------
/auctions/migrations/0141_auctiontos_email_address_status.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 5.0.8 on 2024-08-18 18:54
2 |
3 | from django.db import migrations, models
4 |
5 |
6 | class Migration(migrations.Migration):
7 | dependencies = [
8 | ("auctions", "0140_auction_advanced_lot_adding_alter_auction_buy_now_and_more"),
9 | ]
10 |
11 | operations = [
12 | migrations.AddField(
13 | model_name="auctiontos",
14 | name="email_address_status",
15 | field=models.CharField(
16 | blank=True,
17 | choices=[
18 | ("BAD", "Invalid"),
19 | ("UNKNOWN", "Unknown"),
20 | ("VALID", "Verified"),
21 | ],
22 | default="UNKNOWN",
23 | max_length=20,
24 | ),
25 | ),
26 | ]
27 |
--------------------------------------------------------------------------------
/auctions/migrations/0152_copy_description.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 5.1 on 2024-10-07 12:56
2 |
3 | from django.db import migrations, models
4 |
5 |
6 | def copy_description(apps, schema_editor):
7 | Lot = apps.get_model("auctions", "Lot")
8 | for lot in Lot.objects.all():
9 | lot.summernote_description = lot.description_rendered[:10000] or ""
10 | lot.save()
11 |
12 |
13 | class Migration(migrations.Migration):
14 | dependencies = [
15 | ("auctions", "0151_lot_summernote_description"),
16 | ]
17 |
18 | operations = [
19 | migrations.AlterField(
20 | model_name="lot",
21 | name="summernote_description",
22 | field=models.CharField(blank=True, default="", max_length=10000, verbose_name="Description"),
23 | ),
24 | migrations.RunPython(copy_description),
25 | ]
26 |
--------------------------------------------------------------------------------
/auctions/migrations/0154_remove_auction_notes_remove_auction_notes_rendered_and_more.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 5.1 on 2024-10-07 16:47
2 |
3 | from django.db import migrations
4 |
5 |
6 | class Migration(migrations.Migration):
7 | dependencies = [
8 | ("auctions", "0153_auction_summernote_description"),
9 | ]
10 |
11 | operations = [
12 | migrations.RemoveField(
13 | model_name="auction",
14 | name="notes",
15 | ),
16 | migrations.RemoveField(
17 | model_name="auction",
18 | name="notes_rendered",
19 | ),
20 | migrations.RemoveField(
21 | model_name="lot",
22 | name="description",
23 | ),
24 | migrations.RemoveField(
25 | model_name="lot",
26 | name="description_rendered",
27 | ),
28 | ]
29 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/fa.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/fa",[],function(){return{errorLoading:function(){return"امکان بارگذاری نتایج وجود ندارد."},inputTooLong:function(n){return"لطفاً "+(n.input.length-n.maximum)+" کاراکتر را حذف نمایید"},inputTooShort:function(n){return"لطفاً تعداد "+(n.minimum-n.input.length)+" کاراکتر یا بیشتر وارد نمایید"},loadingMore:function(){return"در حال بارگذاری نتایج بیشتر..."},maximumSelected:function(n){return"شما تنها میتوانید "+n.maximum+" آیتم را انتخاب نمایید"},noResults:function(){return"هیچ نتیجهای یافت نشد"},searching:function(){return"در حال جستجو..."},removeAllItems:function(){return"همه موارد را حذف کنید"}}}),n.define,n.require}();
4 |
--------------------------------------------------------------------------------
/auctions/migrations/0179_auctiontos_possible_duplicate.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 5.1.6 on 2025-03-21 15:40
2 |
3 | import django.db.models.deletion
4 | from django.db import migrations, models
5 |
6 |
7 | class Migration(migrations.Migration):
8 | dependencies = [
9 | ("auctions", "0178_create_locations"),
10 | ]
11 |
12 | operations = [
13 | migrations.AddField(
14 | model_name="auctiontos",
15 | name="possible_duplicate",
16 | field=models.ForeignKey(
17 | blank=True,
18 | help_text="There's a chance this user is a duplicate if this is set",
19 | null=True,
20 | on_delete=django.db.models.deletion.SET_NULL,
21 | related_name="duplicate",
22 | to="auctions.auctiontos",
23 | ),
24 | ),
25 | ]
26 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/en.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(e){var n=e.input.length-e.maximum,r="Please delete "+n+" character";return 1!=n&&(r+="s"),r},inputTooShort:function(e){return"Please enter "+(e.minimum-e.input.length)+" or more characters"},loadingMore:function(){return"Loading more results…"},maximumSelected:function(e){var n="You can only select "+e.maximum+" item";return 1!=e.maximum&&(n+="s"),n},noResults:function(){return"No results found"},searching:function(){return"Searching…"},removeAllItems:function(){return"Remove all items"}}}),e.define,e.require}();
4 |
--------------------------------------------------------------------------------
/auctions/static/autocomplete_light/i18n/id.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.1.0-rc.0 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 | var dalLoadLanguage=function(n){var e;(e=n&&n.fn&&n.fn.select2&&n.fn.select2.amd?n.fn.select2.amd:e).define("select2/i18n/id",[],function(){return{errorLoading:function(){return"Data tidak boleh diambil."},inputTooLong:function(n){return"Hapuskan "+(n.input.length-n.maximum)+" huruf"},inputTooShort:function(n){return"Masukkan "+(n.minimum-n.input.length)+" huruf lagi"},loadingMore:function(){return"Mengambil data…"},maximumSelected:function(n){return"Anda hanya dapat memilih "+n.maximum+" pilihan"},noResults:function(){return"Tidak ada data yang sesuai"},searching:function(){return"Mencari…"},removeAllItems:function(){return"Hapus semua item"}}}),e.define,e.require},event=new CustomEvent("dal-language-loaded",{lang:"id"});document.dispatchEvent(event);
3 |
--------------------------------------------------------------------------------
/auctions/static/autocomplete_light/i18n/tr.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.1.0-rc.0 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 | var dalLoadLanguage=function(n){var e;(e=n&&n.fn&&n.fn.select2&&n.fn.select2.amd?n.fn.select2.amd:e).define("select2/i18n/tr",[],function(){return{errorLoading:function(){return"Sonuç yüklenemedi"},inputTooLong:function(n){return n.input.length-n.maximum+" karakter daha girmelisiniz"},inputTooShort:function(n){return"En az "+(n.minimum-n.input.length)+" karakter daha girmelisiniz"},loadingMore:function(){return"Daha fazla…"},maximumSelected:function(n){return"Sadece "+n.maximum+" seçim yapabilirsiniz"},noResults:function(){return"Sonuç bulunamadı"},searching:function(){return"Aranıyor…"},removeAllItems:function(){return"Tüm öğeleri kaldır"}}}),e.define,e.require},event=new CustomEvent("dal-language-loaded",{lang:"tr"});document.dispatchEvent(event);
3 |
--------------------------------------------------------------------------------
/celery_worker_entrypoint.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # Celery worker entrypoint script
3 |
4 | echo "Waiting for database..."
5 | python << END
6 | import sys
7 | import time
8 | import MySQLdb
9 | start = time.time()
10 | while True:
11 | try:
12 | _db = MySQLdb._mysql.connect(
13 | host="${DATABASE_HOST:-db}",
14 | user="${DATABASE_USER-mysqluser}",
15 | password="${DATABASE_PASSWORD-unsecure}",
16 | database="${DATABASE_NAME-auctions}",
17 | port=int("${DATABASE_PORT-3306}")
18 | )
19 | break
20 | except MySQLdb._exceptions.OperationalError as error:
21 | sys.stderr.write("Waiting for MySQL to become available...\n")
22 | time.sleep(1)
23 | END
24 |
25 | echo "Starting Celery worker..."
26 | cd /home/app/web
27 | exec celery -A fishauctions worker --loglevel=info --concurrency=2
28 |
--------------------------------------------------------------------------------
/auctions/migrations/0153_auction_summernote_description.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 5.1 on 2024-10-07 15:27
2 |
3 | from django.db import migrations, models
4 |
5 |
6 | def copy_notes(apps, schema_editor):
7 | Auction = apps.get_model("auctions", "Auction")
8 | for auction in Auction.objects.all():
9 | auction.summernote_description = auction.notes_rendered[:10000] or ""
10 | auction.save()
11 |
12 |
13 | class Migration(migrations.Migration):
14 | dependencies = [
15 | ("auctions", "0152_copy_description"),
16 | ]
17 |
18 | operations = [
19 | migrations.AddField(
20 | model_name="auction",
21 | name="summernote_description",
22 | field=models.CharField(blank=True, default="", max_length=10000, verbose_name="Rules"),
23 | ),
24 | migrations.RunPython(copy_notes),
25 | ]
26 |
--------------------------------------------------------------------------------
/auctions/migrations/0208_enable_square_encryption.py:
--------------------------------------------------------------------------------
1 | # Generated migration for enabling encryption on SquareSeller OAuth tokens
2 |
3 | import encrypted_model_fields.fields
4 | from django.db import migrations
5 |
6 |
7 | class Migration(migrations.Migration):
8 | dependencies = [
9 | ("auctions", "0207_add_square_oauth_fields"),
10 | ]
11 |
12 | operations = [
13 | migrations.AlterField(
14 | model_name="squareseller",
15 | name="access_token",
16 | field=encrypted_model_fields.fields.EncryptedCharField(blank=True, max_length=500, null=True),
17 | ),
18 | migrations.AlterField(
19 | model_name="squareseller",
20 | name="refresh_token",
21 | field=encrypted_model_fields.fields.EncryptedCharField(blank=True, max_length=500, null=True),
22 | ),
23 | ]
24 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/hi.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/hi",[],function(){return{errorLoading:function(){return"परिणामों को लोड नहीं किया जा सका।"},inputTooLong:function(n){var e=n.input.length-n.maximum,r=e+" अक्षर को हटा दें";return e>1&&(r=e+" अक्षरों को हटा दें "),r},inputTooShort:function(n){return"कृपया "+(n.minimum-n.input.length)+" या अधिक अक्षर दर्ज करें"},loadingMore:function(){return"अधिक परिणाम लोड हो रहे है..."},maximumSelected:function(n){return"आप केवल "+n.maximum+" आइटम का चयन कर सकते हैं"},noResults:function(){return"कोई परिणाम नहीं मिला"},searching:function(){return"खोज रहा है..."},removeAllItems:function(){return"सभी वस्तुओं को हटा दें"}}}),n.define,n.require}();
4 |
--------------------------------------------------------------------------------
/auctions/static/autocomplete_light/i18n/ar.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.1.0-rc.0 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 | var dalLoadLanguage=function(n){var e;(e=n&&n.fn&&n.fn.select2&&n.fn.select2.amd?n.fn.select2.amd:e).define("select2/i18n/ar",[],function(){return{errorLoading:function(){return"لا يمكن تحميل النتائج"},inputTooLong:function(n){return"الرجاء حذف "+(n.input.length-n.maximum)+" عناصر"},inputTooShort:function(n){return"الرجاء إضافة "+(n.minimum-n.input.length)+" عناصر"},loadingMore:function(){return"جاري تحميل نتائج إضافية..."},maximumSelected:function(n){return"تستطيع إختيار "+n.maximum+" بنود فقط"},noResults:function(){return"لم يتم العثور على أي نتائج"},searching:function(){return"جاري البحث…"},removeAllItems:function(){return"قم بإزالة كل العناصر"}}}),e.define,e.require},event=new CustomEvent("dal-language-loaded",{lang:"ar"});document.dispatchEvent(event);
3 |
--------------------------------------------------------------------------------
/auctions/static/autocomplete_light/i18n/th.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.1.0-rc.0 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 | var dalLoadLanguage=function(n){var e;(e=n&&n.fn&&n.fn.select2&&n.fn.select2.amd?n.fn.select2.amd:e).define("select2/i18n/th",[],function(){return{errorLoading:function(){return"ไม่สามารถค้นข้อมูลได้"},inputTooLong:function(n){return"โปรดลบออก "+(n.input.length-n.maximum)+" ตัวอักษร"},inputTooShort:function(n){return"โปรดพิมพ์เพิ่มอีก "+(n.minimum-n.input.length)+" ตัวอักษร"},loadingMore:function(){return"กำลังค้นข้อมูลเพิ่ม…"},maximumSelected:function(n){return"คุณสามารถเลือกได้ไม่เกิน "+n.maximum+" รายการ"},noResults:function(){return"ไม่พบข้อมูล"},searching:function(){return"กำลังค้นข้อมูล…"},removeAllItems:function(){return"ลบรายการทั้งหมด"}}}),e.define,e.require},event=new CustomEvent("dal-language-loaded",{lang:"th"});document.dispatchEvent(event);
3 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/he.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/he",[],function(){return{errorLoading:function(){return"שגיאה בטעינת התוצאות"},inputTooLong:function(n){var e=n.input.length-n.maximum,r="נא למחוק ";return r+=1===e?"תו אחד":e+" תווים"},inputTooShort:function(n){var e=n.minimum-n.input.length,r="נא להכניס ";return r+=1===e?"תו אחד":e+" תווים",r+=" או יותר"},loadingMore:function(){return"טוען תוצאות נוספות…"},maximumSelected:function(n){var e="באפשרותך לבחור עד ";return 1===n.maximum?e+="פריט אחד":e+=n.maximum+" פריטים",e},noResults:function(){return"לא נמצאו תוצאות"},searching:function(){return"מחפש…"},removeAllItems:function(){return"הסר את כל הפריטים"}}}),n.define,n.require}();
4 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/hr.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/hr",[],function(){function n(n){var e=" "+n+" znak";return n%10<5&&n%10>0&&(n%100<5||n%100>19)?n%10>1&&(e+="a"):e+="ova",e}return{errorLoading:function(){return"Preuzimanje nije uspjelo."},inputTooLong:function(e){return"Unesite "+n(e.input.length-e.maximum)},inputTooShort:function(e){return"Unesite još "+n(e.minimum-e.input.length)},loadingMore:function(){return"Učitavanje rezultata…"},maximumSelected:function(n){return"Maksimalan broj odabranih stavki je "+n.maximum},noResults:function(){return"Nema rezultata"},searching:function(){return"Pretraga…"},removeAllItems:function(){return"Ukloni sve stavke"}}}),n.define,n.require}();
4 |
--------------------------------------------------------------------------------
/auctions/static/autocomplete_light/i18n/nb.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.1.0-rc.0 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 | var dalLoadLanguage=function(e){var n;(n=e&&e.fn&&e.fn.select2&&e.fn.select2.amd?e.fn.select2.amd:n).define("select2/i18n/nb",[],function(){return{errorLoading:function(){return"Kunne ikke hente resultater."},inputTooLong:function(e){return"Vennligst fjern "+(e.input.length-e.maximum)+" tegn"},inputTooShort:function(e){return"Vennligst skriv inn "+(e.minimum-e.input.length)+" tegn til"},loadingMore:function(){return"Laster flere resultater…"},maximumSelected:function(e){return"Du kan velge maks "+e.maximum+" elementer"},noResults:function(){return"Ingen treff"},searching:function(){return"Søker…"},removeAllItems:function(){return"Fjern alle elementer"}}}),n.define,n.require},event=new CustomEvent("dal-language-loaded",{lang:"nb"});document.dispatchEvent(event);
3 |
--------------------------------------------------------------------------------
/auctions/static/autocomplete_light/i18n/km.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.1.0-rc.0 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 | var dalLoadLanguage=function(n){var e;(e=n&&n.fn&&n.fn.select2&&n.fn.select2.amd?n.fn.select2.amd:e).define("select2/i18n/km",[],function(){return{errorLoading:function(){return"មិនអាចទាញយកទិន្នន័យ"},inputTooLong:function(n){return"សូមលុបចេញ "+(n.input.length-n.maximum)+" អក្សរ"},inputTooShort:function(n){return"សូមបញ្ចូល"+(n.minimum-n.input.length)+" អក្សរ រឺ ច្រើនជាងនេះ"},loadingMore:function(){return"កំពុងទាញយកទិន្នន័យបន្ថែម..."},maximumSelected:function(n){return"អ្នកអាចជ្រើសរើសបានតែ "+n.maximum+" ជម្រើសប៉ុណ្ណោះ"},noResults:function(){return"មិនមានលទ្ធផល"},searching:function(){return"កំពុងស្វែងរក..."},removeAllItems:function(){return"លុបធាតុទាំងអស់"}}}),e.define,e.require},event=new CustomEvent("dal-language-loaded",{lang:"km"});document.dispatchEvent(event);
3 |
--------------------------------------------------------------------------------
/auctions/static/autocomplete_light/i18n/sv.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.1.0-rc.0 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 | var dalLoadLanguage=function(n){var e;(e=n&&n.fn&&n.fn.select2&&n.fn.select2.amd?n.fn.select2.amd:e).define("select2/i18n/sv",[],function(){return{errorLoading:function(){return"Resultat kunde inte laddas."},inputTooLong:function(n){return"Vänligen sudda ut "+(n.input.length-n.maximum)+" tecken"},inputTooShort:function(n){return"Vänligen skriv in "+(n.minimum-n.input.length)+" eller fler tecken"},loadingMore:function(){return"Laddar fler resultat…"},maximumSelected:function(n){return"Du kan max välja "+n.maximum+" element"},noResults:function(){return"Inga träffar"},searching:function(){return"Söker…"},removeAllItems:function(){return"Ta bort alla objekt"}}}),e.define,e.require},event=new CustomEvent("dal-language-loaded",{lang:"sv"});document.dispatchEvent(event);
3 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/de.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/de",[],function(){return{errorLoading:function(){return"Die Ergebnisse konnten nicht geladen werden."},inputTooLong:function(e){return"Bitte "+(e.input.length-e.maximum)+" Zeichen weniger eingeben"},inputTooShort:function(e){return"Bitte "+(e.minimum-e.input.length)+" Zeichen mehr eingeben"},loadingMore:function(){return"Lade mehr Ergebnisse…"},maximumSelected:function(e){var n="Sie können nur "+e.maximum+" Element";return 1!=e.maximum&&(n+="e"),n+=" auswählen"},noResults:function(){return"Keine Übereinstimmungen gefunden"},searching:function(){return"Suche…"},removeAllItems:function(){return"Entferne alle Elemente"}}}),e.define,e.require}();
4 |
--------------------------------------------------------------------------------
/auctions/static/autocomplete_light/i18n/is.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.1.0-rc.0 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 | var dalLoadLanguage=function(n){var t;(t=n&&n.fn&&n.fn.select2&&n.fn.select2.amd?n.fn.select2.amd:t).define("select2/i18n/is",[],function(){return{inputTooLong:function(n){var t=n.input.length-n.maximum,n="Vinsamlegast styttið texta um "+t+" staf";return t<=1?n:n+"i"},inputTooShort:function(n){var t=n.minimum-n.input.length,n="Vinsamlegast skrifið "+t+" staf";return 1
10 | var lotSearch;
11 | $(window).on("load", function() {
12 | $('#id_lot').select();
13 | var input = document.getElementById('id_lot');
14 | input.addEventListener('keyup', function () {
15 | var value = this.value;
16 | clearTimeout(lotSearch);
17 | lotSearch = setTimeout(function () {
18 | htmx.ajax('get','/api/{{ auction.slug }}/lots/' + encodeURIComponent(value), {target: '#result'});
19 | }, 300);
20 | });
21 | });
22 |
23 | {% endblock %}
24 | {% block content %}
25 | {# {% include 'auction_ribbon.html' %} #}
26 | {% crispy form form.helper %}
27 |
28 | {% endblock %}
29 |
--------------------------------------------------------------------------------
/auctions/migrations/0169_auction_custom_field_1.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 5.1.1 on 2025-03-01 16:28
2 |
3 | from django.db import migrations, models
4 |
5 |
6 | class Migration(migrations.Migration):
7 | dependencies = [
8 | ("auctions", "0168_auction_allow_bulk_adding_lots_and_more"),
9 | ]
10 |
11 | operations = [
12 | migrations.AddField(
13 | model_name="auction",
14 | name="custom_field_1",
15 | field=models.CharField(
16 | choices=[("disable", "Off"), ("allow", "Optional"), ("required", "Required for all lots")],
17 | default="disable",
18 | help_text="Additional information on the label such as notes, scientific name, collection location...",
19 | max_length=20,
20 | verbose_name="Custom field for lots",
21 | ),
22 | ),
23 | ]
24 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/af.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/af",[],function(){return{errorLoading:function(){return"Die resultate kon nie gelaai word nie."},inputTooLong:function(e){var n=e.input.length-e.maximum,r="Verwyders asseblief "+n+" character";return 1!=n&&(r+="s"),r},inputTooShort:function(e){return"Voer asseblief "+(e.minimum-e.input.length)+" of meer karakters"},loadingMore:function(){return"Meer resultate word gelaai…"},maximumSelected:function(e){var n="Kies asseblief net "+e.maximum+" item";return 1!=e.maximum&&(n+="s"),n},noResults:function(){return"Geen resultate gevind"},searching:function(){return"Besig…"},removeAllItems:function(){return"Verwyder alle items"}}}),e.define,e.require}();
4 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/eu.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/eu",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Idatzi ";return n+=1==t?"karaktere bat":t+" karaktere",n+=" gutxiago"},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Idatzi ";return n+=1==t?"karaktere bat":t+" karaktere",n+=" gehiago"},loadingMore:function(){return"Emaitza gehiago kargatzen…"},maximumSelected:function(e){return 1===e.maximum?"Elementu bakarra hauta dezakezu":e.maximum+" elementu hauta ditzakezu soilik"},noResults:function(){return"Ez da bat datorrenik aurkitu"},searching:function(){return"Bilatzen…"},removeAllItems:function(){return"Kendu elementu guztiak"}}}),e.define,e.require}();
4 |
--------------------------------------------------------------------------------
/auctions/static/autocomplete_light/i18n/et.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.1.0-rc.0 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 | var dalLoadLanguage=function(e){var n;(n=e&&e.fn&&e.fn.select2&&e.fn.select2.amd?e.fn.select2.amd:n).define("select2/i18n/et",[],function(){return{inputTooLong:function(e){var n=e.input.length-e.maximum,e="Sisesta "+n+" täht";return 1!=n&&(e+="e"),e+" vähem"},inputTooShort:function(e){var n=e.minimum-e.input.length,e="Sisesta "+n+" täht";return 1!=n&&(e+="e"),e+" rohkem"},loadingMore:function(){return"Laen tulemusi…"},maximumSelected:function(e){var n="Saad vaid "+e.maximum+" tulemus";return 1==e.maximum?n+="e":n+="t",n+" valida"},noResults:function(){return"Tulemused puuduvad"},searching:function(){return"Otsin…"},removeAllItems:function(){return"Eemalda kõik esemed"}}}),n.define,n.require},event=new CustomEvent("dal-language-loaded",{lang:"et"});document.dispatchEvent(event);
3 |
--------------------------------------------------------------------------------
/auctions/static/autocomplete_light/i18n/fi.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.1.0-rc.0 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 | var dalLoadLanguage=function(n){var e;(e=n&&n.fn&&n.fn.select2&&n.fn.select2.amd?n.fn.select2.amd:e).define("select2/i18n/fi",[],function(){return{errorLoading:function(){return"Tuloksia ei saatu ladattua."},inputTooLong:function(n){return"Ole hyvä ja anna "+(n.input.length-n.maximum)+" merkkiä vähemmän"},inputTooShort:function(n){return"Ole hyvä ja anna "+(n.minimum-n.input.length)+" merkkiä lisää"},loadingMore:function(){return"Ladataan lisää tuloksia…"},maximumSelected:function(n){return"Voit valita ainoastaan "+n.maximum+" kpl"},noResults:function(){return"Ei tuloksia"},searching:function(){return"Haetaan…"},removeAllItems:function(){return"Poista kaikki kohteet"}}}),e.define,e.require},event=new CustomEvent("dal-language-loaded",{lang:"fi"});document.dispatchEvent(event);
3 |
--------------------------------------------------------------------------------
/auctions/migrations/0194_remove_paypalseller_access_token_and_more.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 5.2.7 on 2025-10-29 00:53
2 |
3 | from django.db import migrations
4 |
5 |
6 | class Migration(migrations.Migration):
7 | dependencies = [
8 | ("auctions", "0193_auction_dismissed_paypal_banner_and_more"),
9 | ]
10 |
11 | operations = [
12 | migrations.RemoveField(
13 | model_name="paypalseller",
14 | name="paypal_merchant_id_in_paypal",
15 | ),
16 | migrations.RemoveField(
17 | model_name="paypalseller",
18 | name="paypal_user_id",
19 | ),
20 | migrations.RemoveField(
21 | model_name="paypalseller",
22 | name="scope",
23 | ),
24 | migrations.RemoveField(
25 | model_name="paypalseller",
26 | name="token_expires_at",
27 | ),
28 | ]
29 |
--------------------------------------------------------------------------------
/auctions/static/webpush/webpush_serviceworker.js:
--------------------------------------------------------------------------------
1 |
2 | // Register event listener for the 'push' event.
3 | self.addEventListener('push', function(event) {
4 | // Retrieve the textual payload from event.data (a PushMessageData object).
5 | // Other formats are supported (ArrayBuffer, Blob, JSON), check out the documentation
6 | // on https://developer.mozilla.org/en-US/docs/Web/API/PushMessageData.
7 | var payload = event.data ? event.data.text() : {"head": "No Content", "Body": "No Content"},
8 | data = JSON.parse(payload),
9 | head = data.head,
10 | body = data.body;
11 |
12 | // Keep the service worker alive until the notification is created.
13 | event.waitUntil(
14 | // Show a notification with title 'ServiceWorker Cookbook' and use the payload
15 | // as the body.
16 | self.registration.showNotification(head, {
17 | body: body
18 | })
19 | );
20 | });
21 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/mk.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/mk",[],function(){return{inputTooLong:function(n){var e=(n.input.length,n.maximum,"Ве молиме внесете "+n.maximum+" помалку карактер");return 1!==n.maximum&&(e+="и"),e},inputTooShort:function(n){var e=(n.minimum,n.input.length,"Ве молиме внесете уште "+n.maximum+" карактер");return 1!==n.maximum&&(e+="и"),e},loadingMore:function(){return"Вчитување резултати…"},maximumSelected:function(n){var e="Можете да изберете само "+n.maximum+" ставк";return 1===n.maximum?e+="а":e+="и",e},noResults:function(){return"Нема пронајдено совпаѓања"},searching:function(){return"Пребарување…"},removeAllItems:function(){return"Отстрани ги сите предмети"}}}),n.define,n.require}();
4 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/pt-BR.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/pt-BR",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var n=e.input.length-e.maximum,r="Apague "+n+" caracter";return 1!=n&&(r+="es"),r},inputTooShort:function(e){return"Digite "+(e.minimum-e.input.length)+" ou mais caracteres"},loadingMore:function(){return"Carregando mais resultados…"},maximumSelected:function(e){var n="Você só pode selecionar "+e.maximum+" ite";return 1==e.maximum?n+="m":n+="ns",n},noResults:function(){return"Nenhum resultado encontrado"},searching:function(){return"Buscando…"},removeAllItems:function(){return"Remover todos os itens"}}}),e.define,e.require}();
4 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/pt.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/pt",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var r=e.input.length-e.maximum,n="Por favor apague "+r+" ";return n+=1!=r?"caracteres":"caractere"},inputTooShort:function(e){return"Introduza "+(e.minimum-e.input.length)+" ou mais caracteres"},loadingMore:function(){return"A carregar mais resultados…"},maximumSelected:function(e){var r="Apenas pode seleccionar "+e.maximum+" ";return r+=1!=e.maximum?"itens":"item"},noResults:function(){return"Sem resultados"},searching:function(){return"A procurar…"},removeAllItems:function(){return"Remover todos os itens"}}}),e.define,e.require}();
4 |
--------------------------------------------------------------------------------
/auctions/management/commands/change_paypal.py:
--------------------------------------------------------------------------------
1 | import logging
2 |
3 | from django.core.management.base import BaseCommand
4 |
5 | from auctions.models import UserData
6 |
7 | logger = logging.getLogger(__name__)
8 |
9 |
10 | class Command(BaseCommand):
11 | help = "Enable or disable linking paypal accounts all users"
12 |
13 | def add_arguments(self, parser):
14 | parser.add_argument(
15 | "state",
16 | choices=["on", "off"],
17 | help="Set 'on' or 'off'.",
18 | )
19 |
20 | def handle(self, *args, **options):
21 | state = options["state"] == "on"
22 |
23 | count = UserData.objects.update(paypal_enabled=state)
24 | self.stdout.write(
25 | self.style.SUCCESS(
26 | f"{'ENABLED' if state else 'DISABLED'} for {count} users. Make sure to update your .env for new users."
27 | )
28 | )
29 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/bn.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/bn",[],function(){return{errorLoading:function(){return"ফলাফলগুলি লোড করা যায়নি।"},inputTooLong:function(n){var e=n.input.length-n.maximum,u="অনুগ্রহ করে "+e+" টি অক্ষর মুছে দিন।";return 1!=e&&(u="অনুগ্রহ করে "+e+" টি অক্ষর মুছে দিন।"),u},inputTooShort:function(n){return n.minimum-n.input.length+" টি অক্ষর অথবা অধিক অক্ষর লিখুন।"},loadingMore:function(){return"আরো ফলাফল লোড হচ্ছে ..."},maximumSelected:function(n){var e=n.maximum+" টি আইটেম নির্বাচন করতে পারবেন।";return 1!=n.maximum&&(e=n.maximum+" টি আইটেম নির্বাচন করতে পারবেন।"),e},noResults:function(){return"কোন ফলাফল পাওয়া যায়নি।"},searching:function(){return"অনুসন্ধান করা হচ্ছে ..."}}}),n.define,n.require}();
4 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/lv.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/lv",[],function(){function e(e,n,u,i){return 11===e?n:e%10==1?u:i}return{inputTooLong:function(n){var u=n.input.length-n.maximum,i="Lūdzu ievadiet par "+u;return(i+=" simbol"+e(u,"iem","u","iem"))+" mazāk"},inputTooShort:function(n){var u=n.minimum-n.input.length,i="Lūdzu ievadiet vēl "+u;return i+=" simbol"+e(u,"us","u","us")},loadingMore:function(){return"Datu ielāde…"},maximumSelected:function(n){var u="Jūs varat izvēlēties ne vairāk kā "+n.maximum;return u+=" element"+e(n.maximum,"us","u","us")},noResults:function(){return"Sakritību nav"},searching:function(){return"Meklēšana…"},removeAllItems:function(){return"Noņemt visus vienumus"}}}),e.define,e.require}();
4 |
--------------------------------------------------------------------------------
/auctions/static/autocomplete_light/i18n/ms.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.1.0-rc.0 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 | var dalLoadLanguage=function(n){var e;(e=n&&n.fn&&n.fn.select2&&n.fn.select2.amd?n.fn.select2.amd:e).define("select2/i18n/ms",[],function(){return{errorLoading:function(){return"Keputusan tidak berjaya dimuatkan."},inputTooLong:function(n){return"Sila hapuskan "+(n.input.length-n.maximum)+" aksara"},inputTooShort:function(n){return"Sila masukkan "+(n.minimum-n.input.length)+" atau lebih aksara"},loadingMore:function(){return"Sedang memuatkan keputusan…"},maximumSelected:function(n){return"Anda hanya boleh memilih "+n.maximum+" pilihan"},noResults:function(){return"Tiada padanan yang ditemui"},searching:function(){return"Mencari…"},removeAllItems:function(){return"Keluarkan semua item"}}}),e.define,e.require},event=new CustomEvent("dal-language-loaded",{lang:"ms"});document.dispatchEvent(event);
3 |
--------------------------------------------------------------------------------
/celery_beat_entrypoint.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # Celery beat entrypoint script
3 |
4 | echo "Waiting for database..."
5 | python << END
6 | import sys
7 | import time
8 | import MySQLdb
9 | start = time.time()
10 | while True:
11 | try:
12 | _db = MySQLdb._mysql.connect(
13 | host="${DATABASE_HOST:-db}",
14 | user="${DATABASE_USER-mysqluser}",
15 | password="${DATABASE_PASSWORD-unsecure}",
16 | database="${DATABASE_NAME-auctions}",
17 | port=int("${DATABASE_PORT-3306}")
18 | )
19 | break
20 | except MySQLdb._exceptions.OperationalError as error:
21 | sys.stderr.write("Waiting for MySQL to become available...\n")
22 | time.sleep(1)
23 | END
24 |
25 | echo "Starting Celery beat scheduler..."
26 | cd /home/app/web
27 | exec celery -A fishauctions beat --loglevel=info --scheduler django_celery_beat.schedulers:DatabaseScheduler
28 |
--------------------------------------------------------------------------------
/auctions/management/commands/change_square.py:
--------------------------------------------------------------------------------
1 | import logging
2 |
3 | from django.core.management.base import BaseCommand
4 |
5 | from auctions.models import UserData
6 |
7 | logger = logging.getLogger(__name__)
8 |
9 |
10 | class Command(BaseCommand):
11 | help = "Enable or disable linking square accounts for all users"
12 |
13 | def add_arguments(self, parser):
14 | parser.add_argument(
15 | "state",
16 | choices=["on", "off"],
17 | help="Set 'on' or 'off'.",
18 | )
19 |
20 | def handle(self, *args, **options):
21 | state = options["state"] == "on"
22 |
23 | count = UserData.objects.update(square_enabled=state)
24 | self.stdout.write(
25 | self.style.SUCCESS(
26 | f"{'ENABLED' if state else 'DISABLED'} for {count} users. Make sure to update your .env for new users."
27 | )
28 | )
29 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/ca.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/ca",[],function(){return{errorLoading:function(){return"La càrrega ha fallat"},inputTooLong:function(e){var n=e.input.length-e.maximum,r="Si us plau, elimina "+n+" car";return r+=1==n?"àcter":"àcters"},inputTooShort:function(e){var n=e.minimum-e.input.length,r="Si us plau, introdueix "+n+" car";return r+=1==n?"àcter":"àcters"},loadingMore:function(){return"Carregant més resultats…"},maximumSelected:function(e){var n="Només es pot seleccionar "+e.maximum+" element";return 1!=e.maximum&&(n+="s"),n},noResults:function(){return"No s'han trobat resultats"},searching:function(){return"Cercant…"},removeAllItems:function(){return"Treu tots els elements"}}}),e.define,e.require}();
4 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/ps.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/ps",[],function(){return{errorLoading:function(){return"پايلي نه سي ترلاسه کېدای"},inputTooLong:function(n){var e=n.input.length-n.maximum,r="د مهربانۍ لمخي "+e+" توری ړنګ کړئ";return 1!=e&&(r=r.replace("توری","توري")),r},inputTooShort:function(n){return"لږ تر لږه "+(n.minimum-n.input.length)+" يا ډېر توري وليکئ"},loadingMore:function(){return"نوري پايلي ترلاسه کيږي..."},maximumSelected:function(n){var e="تاسو يوازي "+n.maximum+" قلم په نښه کولای سی";return 1!=n.maximum&&(e=e.replace("قلم","قلمونه")),e},noResults:function(){return"پايلي و نه موندل سوې"},searching:function(){return"لټول کيږي..."},removeAllItems:function(){return"ټول توکي لرې کړئ"}}}),n.define,n.require}();
4 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/sq.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/sq",[],function(){return{errorLoading:function(){return"Rezultatet nuk mund të ngarkoheshin."},inputTooLong:function(e){var n=e.input.length-e.maximum,t="Të lutem fshi "+n+" karakter";return 1!=n&&(t+="e"),t},inputTooShort:function(e){return"Të lutem shkruaj "+(e.minimum-e.input.length)+" ose më shumë karaktere"},loadingMore:function(){return"Duke ngarkuar më shumë rezultate…"},maximumSelected:function(e){var n="Mund të zgjedhësh vetëm "+e.maximum+" element";return 1!=e.maximum&&(n+="e"),n},noResults:function(){return"Nuk u gjet asnjë rezultat"},searching:function(){return"Duke kërkuar…"},removeAllItems:function(){return"Hiq të gjitha sendet"}}}),e.define,e.require}();
4 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/it.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/it",[],function(){return{errorLoading:function(){return"I risultati non possono essere caricati."},inputTooLong:function(e){var n=e.input.length-e.maximum,t="Per favore cancella "+n+" caratter";return t+=1!==n?"i":"e"},inputTooShort:function(e){return"Per favore inserisci "+(e.minimum-e.input.length)+" o più caratteri"},loadingMore:function(){return"Caricando più risultati…"},maximumSelected:function(e){var n="Puoi selezionare solo "+e.maximum+" element";return 1!==e.maximum?n+="i":n+="o",n},noResults:function(){return"Nessun risultato trovato"},searching:function(){return"Sto cercando…"},removeAllItems:function(){return"Rimuovi tutti gli oggetti"}}}),e.define,e.require}();
4 |
--------------------------------------------------------------------------------
/auctions/static/autocomplete_light/i18n/da.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.1.0-rc.0 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 | var dalLoadLanguage=function(e){var n;(n=e&&e.fn&&e.fn.select2&&e.fn.select2.amd?e.fn.select2.amd:n).define("select2/i18n/da",[],function(){return{errorLoading:function(){return"Resultaterne kunne ikke indlæses."},inputTooLong:function(e){return"Angiv venligst "+(e.input.length-e.maximum)+" tegn mindre"},inputTooShort:function(e){return"Angiv venligst "+(e.minimum-e.input.length)+" tegn mere"},loadingMore:function(){return"Indlæser flere resultater…"},maximumSelected:function(e){var n="Du kan kun vælge "+e.maximum+" emne";return 1!=e.maximum&&(n+="r"),n},noResults:function(){return"Ingen resultater fundet"},searching:function(){return"Søger…"},removeAllItems:function(){return"Fjern alle elementer"}}}),n.define,n.require},event=new CustomEvent("dal-language-loaded",{lang:"da"});document.dispatchEvent(event);
3 |
--------------------------------------------------------------------------------
/auctions/static/autocomplete_light/i18n/ka.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.1.0-rc.0 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 | var dalLoadLanguage=function(n){var e;(e=n&&n.fn&&n.fn.select2&&n.fn.select2.amd?n.fn.select2.amd:e).define("select2/i18n/ka",[],function(){return{errorLoading:function(){return"მონაცემების ჩატვირთვა შეუძლებელია."},inputTooLong:function(n){return"გთხოვთ აკრიფეთ "+(n.input.length-n.maximum)+" სიმბოლოთი ნაკლები"},inputTooShort:function(n){return"გთხოვთ აკრიფეთ "+(n.minimum-n.input.length)+" სიმბოლო ან მეტი"},loadingMore:function(){return"მონაცემების ჩატვირთვა…"},maximumSelected:function(n){return"თქვენ შეგიძლიათ აირჩიოთ არაუმეტეს "+n.maximum+" ელემენტი"},noResults:function(){return"რეზულტატი არ მოიძებნა"},searching:function(){return"ძიება…"},removeAllItems:function(){return"ამოიღე ყველა ელემენტი"}}}),e.define,e.require},event=new CustomEvent("dal-language-loaded",{lang:"ka"});document.dispatchEvent(event);
3 |
--------------------------------------------------------------------------------
/auctions/migrations/0137_alter_userlabelprefs_preset.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 5.0.7 on 2024-08-02 19:52
2 |
3 | from django.db import migrations, models
4 |
5 |
6 | class Migration(migrations.Migration):
7 | dependencies = [
8 | ("auctions", "0136_alter_lot_banned_alter_lot_partial_refund_percent"),
9 | ]
10 |
11 | operations = [
12 | migrations.AlterField(
13 | model_name="userlabelprefs",
14 | name="preset",
15 | field=models.CharField(
16 | choices=[
17 | ("sm", "Small (Avery 5160)"),
18 | ("lg", "Large (Avery 18262)"),
19 | ("thermal_sm", 'Thermal 3"x2"'),
20 | ("custom", "Custom"),
21 | ],
22 | default="lg",
23 | max_length=20,
24 | verbose_name="Label size",
25 | ),
26 | ),
27 | ]
28 |
--------------------------------------------------------------------------------
/auctions/migrations/0178_create_locations.py:
--------------------------------------------------------------------------------
1 | from django.db import migrations
2 |
3 |
4 | def create_locations(apps, schema_editor):
5 | Location = apps.get_model("auctions", "Location")
6 |
7 | if not Location.objects.exists():
8 | Location.objects.bulk_create(
9 | [
10 | Location(name="Other"),
11 | Location(name="Australia"),
12 | Location(name="Africa"),
13 | Location(name="South America"),
14 | Location(name="Europe"),
15 | Location(name="Canada"),
16 | Location(name="United States"),
17 | ]
18 | )
19 |
20 |
21 | class Migration(migrations.Migration):
22 | dependencies = [
23 | ("auctions", "0177_alter_pageview_date_start_alter_pageview_session_id"),
24 | ]
25 |
26 | operations = [
27 | migrations.RunPython(create_locations),
28 | ]
29 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/nl.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/nl",[],function(){return{errorLoading:function(){return"De resultaten konden niet worden geladen."},inputTooLong:function(e){return"Gelieve "+(e.input.length-e.maximum)+" karakters te verwijderen"},inputTooShort:function(e){return"Gelieve "+(e.minimum-e.input.length)+" of meer karakters in te voeren"},loadingMore:function(){return"Meer resultaten laden…"},maximumSelected:function(e){var n=1==e.maximum?"kan":"kunnen",r="Er "+n+" maar "+e.maximum+" item";return 1!=e.maximum&&(r+="s"),r+=" worden geselecteerd"},noResults:function(){return"Geen resultaten gevonden…"},searching:function(){return"Zoeken…"},removeAllItems:function(){return"Verwijder alle items"}}}),e.define,e.require}();
4 |
--------------------------------------------------------------------------------
/auctions/static/autocomplete_light/i18n/bg.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.1.0-rc.0 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 | var dalLoadLanguage=function(n){var e;(e=n&&n.fn&&n.fn.select2&&n.fn.select2.amd?n.fn.select2.amd:e).define("select2/i18n/bg",[],function(){return{inputTooLong:function(n){var e=n.input.length-n.maximum,n="Моля въведете с "+e+" по-малко символ";return 11?"s":"")},inputTooShort:function(e){var n=e.minimum-e.input.length;return"Saisissez au moins "+n+" caractère"+(n>1?"s":"")},loadingMore:function(){return"Chargement de résultats supplémentaires…"},maximumSelected:function(e){return"Vous pouvez seulement sélectionner "+e.maximum+" élément"+(e.maximum>1?"s":"")},noResults:function(){return"Aucun résultat trouvé"},searching:function(){return"Recherche en cours…"},removeAllItems:function(){return"Supprimer tous les éléments"}}}),e.define,e.require}();
4 |
--------------------------------------------------------------------------------
/auctions/static/autocomplete_light/i18n/fa.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.1.0-rc.0 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 | var dalLoadLanguage=function(n){var e;(e=n&&n.fn&&n.fn.select2&&n.fn.select2.amd?n.fn.select2.amd:e).define("select2/i18n/fa",[],function(){return{errorLoading:function(){return"امکان بارگذاری نتایج وجود ندارد."},inputTooLong:function(n){return"لطفاً "+(n.input.length-n.maximum)+" کاراکتر را حذف نمایید"},inputTooShort:function(n){return"لطفاً تعداد "+(n.minimum-n.input.length)+" کاراکتر یا بیشتر وارد نمایید"},loadingMore:function(){return"در حال بارگذاری نتایج بیشتر..."},maximumSelected:function(n){return"شما تنها میتوانید "+n.maximum+" آیتم را انتخاب نمایید"},noResults:function(){return"هیچ نتیجهای یافت نشد"},searching:function(){return"در حال جستجو..."},removeAllItems:function(){return"همه موارد را حذف کنید"}}}),e.define,e.require},event=new CustomEvent("dal-language-loaded",{lang:"fa"});document.dispatchEvent(event);
3 |
--------------------------------------------------------------------------------
/auctions/static/autocomplete_light/i18n/he.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.1.0-rc.0 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 | var dalLoadLanguage=function(n){var e;(e=n&&n.fn&&n.fn.select2&&n.fn.select2.amd?n.fn.select2.amd:e).define("select2/i18n/he",[],function(){return{errorLoading:function(){return"שגיאה בטעינת התוצאות"},inputTooLong:function(n){n=n.input.length-n.maximum;return"נא למחוק "+(1==n?"תו אחד":n+" תווים")},inputTooShort:function(n){var e=n.minimum-n.input.length,n="נא להכניס ";return(n+=1==e?"תו אחד":e+" תווים")+" או יותר"},loadingMore:function(){return"טוען תוצאות נוספות…"},maximumSelected:function(n){var e="באפשרותך לבחור עד ";return 1===n.maximum?e+="פריט אחד":e+=n.maximum+" פריטים",e},noResults:function(){return"לא נמצאו תוצאות"},searching:function(){return"מחפש…"},removeAllItems:function(){return"הסר את כל הפריטים"}}}),e.define,e.require},event=new CustomEvent("dal-language-loaded",{lang:"he"});document.dispatchEvent(event);
3 |
--------------------------------------------------------------------------------
/auctions/migrations/0156_category_name_on_label_and_more.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 5.1 on 2024-10-16 14:58
2 |
3 | from django.db import migrations, models
4 |
5 |
6 | class Migration(migrations.Migration):
7 | dependencies = [
8 | ("auctions", "0155_auction_label_print_fields"),
9 | ]
10 |
11 | operations = [
12 | migrations.AddField(
13 | model_name="category",
14 | name="name_on_label",
15 | field=models.CharField(default="", max_length=255),
16 | ),
17 | migrations.AlterField(
18 | model_name="auction",
19 | name="label_print_fields",
20 | field=models.CharField(
21 | blank=True,
22 | default="qr_code,lot_name,min_bid_label,buy_now_label,quantity_label,seller_name,donation_label",
23 | max_length=1000,
24 | null=True,
25 | ),
26 | ),
27 | ]
28 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/es.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/es",[],function(){return{errorLoading:function(){return"No se pudieron cargar los resultados"},inputTooLong:function(e){var n=e.input.length-e.maximum,r="Por favor, elimine "+n+" car";return r+=1==n?"ácter":"acteres"},inputTooShort:function(e){var n=e.minimum-e.input.length,r="Por favor, introduzca "+n+" car";return r+=1==n?"ácter":"acteres"},loadingMore:function(){return"Cargando más resultados…"},maximumSelected:function(e){var n="Sólo puede seleccionar "+e.maximum+" elemento";return 1!=e.maximum&&(n+="s"),n},noResults:function(){return"No se encontraron resultados"},searching:function(){return"Buscando…"},removeAllItems:function(){return"Eliminar todos los elementos"}}}),e.define,e.require}();
4 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/gl.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/gl",[],function(){return{errorLoading:function(){return"Non foi posíbel cargar os resultados."},inputTooLong:function(e){var n=e.input.length-e.maximum;return 1===n?"Elimine un carácter":"Elimine "+n+" caracteres"},inputTooShort:function(e){var n=e.minimum-e.input.length;return 1===n?"Engada un carácter":"Engada "+n+" caracteres"},loadingMore:function(){return"Cargando máis resultados…"},maximumSelected:function(e){return 1===e.maximum?"Só pode seleccionar un elemento":"Só pode seleccionar "+e.maximum+" elementos"},noResults:function(){return"Non se atoparon resultados"},searching:function(){return"Buscando…"},removeAllItems:function(){return"Elimina todos os elementos"}}}),e.define,e.require}();
4 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/sl.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/sl",[],function(){return{errorLoading:function(){return"Zadetkov iskanja ni bilo mogoče naložiti."},inputTooLong:function(e){var n=e.input.length-e.maximum,t="Prosim zbrišite "+n+" znak";return 2==n?t+="a":1!=n&&(t+="e"),t},inputTooShort:function(e){var n=e.minimum-e.input.length,t="Prosim vpišite še "+n+" znak";return 2==n?t+="a":1!=n&&(t+="e"),t},loadingMore:function(){return"Nalagam več zadetkov…"},maximumSelected:function(e){var n="Označite lahko največ "+e.maximum+" predmet";return 2==e.maximum?n+="a":1!=e.maximum&&(n+="e"),n},noResults:function(){return"Ni zadetkov."},searching:function(){return"Iščem…"},removeAllItems:function(){return"Odstranite vse elemente"}}}),e.define,e.require}();
4 |
--------------------------------------------------------------------------------
/auctions/static/summernote/bs5-hack.js:
--------------------------------------------------------------------------------
1 | // Function to replace data-toggle with data-bs-toggle
2 | function replaceDataToggle() {
3 | document.querySelectorAll('[data-toggle="dropdown"]').forEach(function(el) {
4 | el.setAttribute('data-bs-toggle', 'dropdown');
5 | el.removeAttribute('data-toggle');
6 | });
7 | }
8 |
9 | // Run on page load
10 | document.addEventListener('DOMContentLoaded', function() {
11 | replaceDataToggle();
12 |
13 | // Observe for new elements added to the iframe's DOM
14 | const observer = new MutationObserver(function(mutations) {
15 | mutations.forEach(function(mutation) {
16 | if (mutation.addedNodes.length > 0) {
17 | replaceDataToggle(); // Replace in newly added elements
18 | }
19 | });
20 | });
21 |
22 | // Observe the document body for changes
23 | observer.observe(document.body, { childList: true, subtree: true });
24 | });
25 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/ro.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/ro",[],function(){return{errorLoading:function(){return"Rezultatele nu au putut fi incărcate."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vă rugăm să ștergeți"+t+" caracter";return 1!==t&&(n+="e"),n},inputTooShort:function(e){return"Vă rugăm să introduceți "+(e.minimum-e.input.length)+" sau mai multe caractere"},loadingMore:function(){return"Se încarcă mai multe rezultate…"},maximumSelected:function(e){var t="Aveți voie să selectați cel mult "+e.maximum;return t+=" element",1!==e.maximum&&(t+="e"),t},noResults:function(){return"Nu au fost găsite rezultate"},searching:function(){return"Căutare…"},removeAllItems:function(){return"Eliminați toate elementele"}}}),e.define,e.require}();
4 |
--------------------------------------------------------------------------------
/auctions/migrations/0150_auction_invoice_rounding_and_more.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 5.1 on 2024-10-05 13:38
2 |
3 | from django.db import migrations, models
4 |
5 |
6 | class Migration(migrations.Migration):
7 | dependencies = [
8 | ("auctions", "0149_alter_userdata_email_me_when_people_comment_on_my_lots_and_more"),
9 | ]
10 |
11 | operations = [
12 | migrations.AddField(
13 | model_name="auction",
14 | name="invoice_rounding",
15 | field=models.BooleanField(
16 | default=True,
17 | help_text="Round invoice totals to whole dollar amounts. Check if you plan to accept cash payments.",
18 | ),
19 | ),
20 | migrations.AlterField(
21 | model_name="auction",
22 | name="allow_bidding_on_lots",
23 | field=models.BooleanField(default=True, verbose_name="Allow online bidding"),
24 | ),
25 | ]
26 |
--------------------------------------------------------------------------------
/auctions/static/autocomplete_light/i18n/eo.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.1.0-rc.0 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 | var dalLoadLanguage=function(n){var e;(e=n&&n.fn&&n.fn.select2&&n.fn.select2.amd?n.fn.select2.amd:e).define("select2/i18n/eo",[],function(){return{errorLoading:function(){return"La rezultoj ne povas esti ŝargitaj."},inputTooLong:function(n){n=n.input.length-n.maximum;return"Bonvolu forigi "+n+" signo"+(1==n?"n":"jn")},inputTooShort:function(n){return"Bv. enigi "+(n.minimum-n.input.length)+" aŭ pli multajn signojn"},loadingMore:function(){return"Ŝargado de pliaj rezultoj…"},maximumSelected:function(n){var e="Vi povas elekti nur "+n.maximum+" ero";return 1==n.maximum?e+="n":e+="jn",e},noResults:function(){return"Neniuj rezultoj trovitaj"},searching:function(){return"Serĉado…"},removeAllItems:function(){return"Forigi ĉiujn erojn"}}}),e.define,e.require},event=new CustomEvent("dal-language-loaded",{lang:"eo"});document.dispatchEvent(event);
3 |
--------------------------------------------------------------------------------
/auctions/static/autocomplete_light/i18n/hr.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.1.0-rc.0 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 | var dalLoadLanguage=function(n){var e;(e=n&&n.fn&&n.fn.select2&&n.fn.select2.amd?n.fn.select2.amd:e).define("select2/i18n/hr",[],function(){function e(n){var e=" "+n+" znak";return n%10<5&&0{% trans "Password Reset" %}
10 |
11 | {% if user.is_authenticated %}
12 | {% include "account/snippets/already_logged_in.html" %}
13 | {% endif %}
14 | {% trans "Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it." %}
15 |
20 |
21 | {% endblock %}
22 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/lt.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/lt",[],function(){function n(n,e,i,t){return n%10==1&&(n%100<11||n%100>19)?e:n%10>=2&&n%10<=9&&(n%100<11||n%100>19)?i:t}return{inputTooLong:function(e){var i=e.input.length-e.maximum,t="Pašalinkite "+i+" simbol";return t+=n(i,"į","ius","ių")},inputTooShort:function(e){var i=e.minimum-e.input.length,t="Įrašykite dar "+i+" simbol";return t+=n(i,"į","ius","ių")},loadingMore:function(){return"Kraunama daugiau rezultatų…"},maximumSelected:function(e){var i="Jūs galite pasirinkti tik "+e.maximum+" element";return i+=n(e.maximum,"ą","us","ų")},noResults:function(){return"Atitikmenų nerasta"},searching:function(){return"Ieškoma…"},removeAllItems:function(){return"Pašalinti visus elementus"}}}),n.define,n.require}();
4 |
--------------------------------------------------------------------------------
/auctions/static/django_extensions/css/jquery.autocomplete.css:
--------------------------------------------------------------------------------
1 | /**
2 | * @fileOverview CSS for jquery-autocomplete, the jQuery Autocompleter
3 | * @author Dylan Verheul
4 | * @license MIT | GPL | Apache 2.0, see LICENSE.txt
5 | * @see https://github.com/dyve/jquery-autocomplete
6 | */
7 | .acResults {
8 | padding: 0px;
9 | border: 1px solid WindowFrame;
10 | background-color: Window;
11 | overflow: hidden;
12 | }
13 |
14 | .acResults ul {
15 | margin: 0px;
16 | padding: 0px;
17 | list-style-position: outside;
18 | list-style: none;
19 | }
20 |
21 | .acResults ul li {
22 | margin: 0px;
23 | padding: 2px 5px;
24 | cursor: pointer;
25 | display: block;
26 | font: menu;
27 | font-size: 12px;
28 | overflow: hidden;
29 | }
30 |
31 | .acLoading {
32 | background : url('../img/indicator.gif') right center no-repeat;
33 | }
34 |
35 | .acSelect {
36 | background-color: Highlight;
37 | color: HighlightText;
38 | }
39 |
--------------------------------------------------------------------------------
/auctions/templates/account/password_reset_from_key.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 |
3 | {% load i18n %}
4 | {% load crispy_forms_tags %}
5 | {% block head_title %}{% trans "Change Password" %}{% endblock %}
6 |
7 | {% block content %}
8 |
{% if token_fail %}{% trans "Bad Token" %}{% else %}{% trans "Change Password" %}{% endif %}
9 |
10 | {% if token_fail %}
11 | {% url 'account_reset_password' as passwd_reset_url %}
12 |
{% blocktrans %}The password reset link was invalid, possibly because it has already been used. Please request a new password reset.{% endblocktrans %}
13 | {% else %}
14 |
19 | {% endif %}
20 | {% endblock %}
21 |
--------------------------------------------------------------------------------
/nginx.dev.conf:
--------------------------------------------------------------------------------
1 | events {
2 | worker_connections 1024;
3 | }
4 |
5 | http {
6 | include /etc/nginx/mime.types;
7 | default_type application/octet-stream;
8 | log_format main '$remote_addr - $remote_user [$time_local] "$request" '
9 | '$status $body_bytes_sent "$http_referer" '
10 | '"$http_user_agent" "$http_x_forwarded_for"';
11 |
12 | access_log off;
13 | #access_log /var/log/nginx/access.log main;
14 | error_log /var/log/nginx/error.log warn;
15 |
16 | sendfile on;
17 | tcp_nopush on;
18 | tcp_nodelay on;
19 | keepalive_timeout 65;
20 | types_hash_max_size 2048;
21 |
22 | include /etc/nginx/conf.d/*.conf;
23 | include /etc/nginx/sites-enabled/*;
24 | server {
25 | listen 80 default_server;
26 | listen [::]:80 default_server;
27 |
28 | server_name _;
29 |
30 |
31 |
32 | include ./nginx_fishauctions.conf;
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/auctions/migrations/0207_add_square_oauth_fields.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 5.2.8 on 2025-11-15 17:31
2 |
3 | from django.db import migrations, models
4 |
5 |
6 | class Migration(migrations.Migration):
7 | dependencies = [
8 | ("auctions", "0206_auction_dismissed_square_banner_and_more"),
9 | ]
10 |
11 | operations = [
12 | migrations.AddField(
13 | model_name="squareseller",
14 | name="access_token",
15 | field=models.CharField(blank=True, max_length=500, null=True),
16 | ),
17 | migrations.AddField(
18 | model_name="squareseller",
19 | name="refresh_token",
20 | field=models.CharField(blank=True, max_length=500, null=True),
21 | ),
22 | migrations.AddField(
23 | model_name="squareseller",
24 | name="token_expires_at",
25 | field=models.DateTimeField(blank=True, null=True),
26 | ),
27 | ]
28 |
--------------------------------------------------------------------------------
/auctions/static/admin/js/vendor/select2/i18n/pl.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 |
3 | !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/pl",[],function(){var n=["znak","znaki","znaków"],e=["element","elementy","elementów"],r=function(n,e){return 1===n?e[0]:n>1&&n<=4?e[1]:n>=5?e[2]:void 0};return{errorLoading:function(){return"Nie można załadować wyników."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Usuń "+t+" "+r(t,n)},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Podaj przynajmniej "+t+" "+r(t,n)},loadingMore:function(){return"Trwa ładowanie…"},maximumSelected:function(n){return"Możesz zaznaczyć tylko "+n.maximum+" "+r(n.maximum,e)},noResults:function(){return"Brak wyników"},searching:function(){return"Trwa wyszukiwanie…"},removeAllItems:function(){return"Usuń wszystkie przedmioty"}}}),n.define,n.require}();
4 |
--------------------------------------------------------------------------------
/auctions/static/autocomplete_light/i18n/de.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.1.0-rc.0 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 | var dalLoadLanguage=function(e){var n;(n=e&&e.fn&&e.fn.select2&&e.fn.select2.amd?e.fn.select2.amd:n).define("select2/i18n/de",[],function(){return{errorLoading:function(){return"Die Ergebnisse konnten nicht geladen werden."},inputTooLong:function(e){return"Bitte "+(e.input.length-e.maximum)+" Zeichen weniger eingeben"},inputTooShort:function(e){return"Bitte "+(e.minimum-e.input.length)+" Zeichen mehr eingeben"},loadingMore:function(){return"Lade mehr Ergebnisse…"},maximumSelected:function(e){var n="Sie können nur "+e.maximum+" Element";return 1!=e.maximum&&(n+="e"),n+" auswählen"},noResults:function(){return"Keine Übereinstimmungen gefunden"},searching:function(){return"Suche…"},removeAllItems:function(){return"Entferne alle Elemente"}}}),n.define,n.require},event=new CustomEvent("dal-language-loaded",{lang:"de"});document.dispatchEvent(event);
3 |
--------------------------------------------------------------------------------
/auctions/static/autocomplete_light/i18n/eu.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.1.0-rc.0 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 | var dalLoadLanguage=function(e){var n;(n=e&&e.fn&&e.fn.select2&&e.fn.select2.amd?e.fn.select2.amd:n).define("select2/i18n/eu",[],function(){return{inputTooLong:function(e){var n=e.input.length-e.maximum,e="Idatzi ";return(e+=1==n?"karaktere bat":n+" karaktere")+" gutxiago"},inputTooShort:function(e){var n=e.minimum-e.input.length,e="Idatzi ";return(e+=1==n?"karaktere bat":n+" karaktere")+" gehiago"},loadingMore:function(){return"Emaitza gehiago kargatzen…"},maximumSelected:function(e){return 1===e.maximum?"Elementu bakarra hauta dezakezu":e.maximum+" elementu hauta ditzakezu soilik"},noResults:function(){return"Ez da bat datorrenik aurkitu"},searching:function(){return"Bilatzen…"},removeAllItems:function(){return"Kendu elementu guztiak"}}}),n.define,n.require},event=new CustomEvent("dal-language-loaded",{lang:"eu"});document.dispatchEvent(event);
3 |
--------------------------------------------------------------------------------
/auctions/static/autocomplete_light/i18n/lv.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.1.0-rc.0 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 | var dalLoadLanguage=function(e){var n;(n=e&&e.fn&&e.fn.select2&&e.fn.select2.amd?e.fn.select2.amd:n).define("select2/i18n/lv",[],function(){function n(e,n,t,u){return 11===e?n:e%10==1?t:u}return{inputTooLong:function(e){e=e.input.length-e.maximum;return"Lūdzu ievadiet par "+e+(" simbol"+n(e,"iem","u","iem"))+" mazāk"},inputTooShort:function(e){e=e.minimum-e.input.length;return"Lūdzu ievadiet vēl "+e+(" simbol"+n(e,"us","u","us"))},loadingMore:function(){return"Datu ielāde…"},maximumSelected:function(e){return"Jūs varat izvēlēties ne vairāk kā "+e.maximum+(" element"+n(e.maximum,"us","u","us"))},noResults:function(){return"Sakritību nav"},searching:function(){return"Meklēšana…"},removeAllItems:function(){return"Noņemt visus vienumus"}}}),n.define,n.require},event=new CustomEvent("dal-language-loaded",{lang:"lv"});document.dispatchEvent(event);
3 |
--------------------------------------------------------------------------------
/auctions/static/autocomplete_light/i18n/pt.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.1.0-rc.0 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 | var dalLoadLanguage=function(e){var n;(n=e&&e.fn&&e.fn.select2&&e.fn.select2.amd?e.fn.select2.amd:n).define("select2/i18n/pt",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){e=e.input.length-e.maximum;return"Por favor apague "+e+" "+(1!=e?"caracteres":"caractere")},inputTooShort:function(e){return"Introduza "+(e.minimum-e.input.length)+" ou mais caracteres"},loadingMore:function(){return"A carregar mais resultados…"},maximumSelected:function(e){return"Apenas pode seleccionar "+e.maximum+" "+(1!=e.maximum?"itens":"item")},noResults:function(){return"Sem resultados"},searching:function(){return"A procurar…"},removeAllItems:function(){return"Remover todos os itens"}}}),n.define,n.require},event=new CustomEvent("dal-language-loaded",{lang:"pt"});document.dispatchEvent(event);
3 |
--------------------------------------------------------------------------------
/auctions/static/autocomplete_light/i18n/af.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.1.0-rc.0 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 | var dalLoadLanguage=function(e){var n;(n=e&&e.fn&&e.fn.select2&&e.fn.select2.amd?e.fn.select2.amd:n).define("select2/i18n/af",[],function(){return{errorLoading:function(){return"Die resultate kon nie gelaai word nie."},inputTooLong:function(e){var n=e.input.length-e.maximum,e="Verwyders asseblief "+n+" character";return 1!=n&&(e+="s"),e},inputTooShort:function(e){return"Voer asseblief "+(e.minimum-e.input.length)+" of meer karakters"},loadingMore:function(){return"Meer resultate word gelaai…"},maximumSelected:function(e){var n="Kies asseblief net "+e.maximum+" item";return 1!=e.maximum&&(n+="s"),n},noResults:function(){return"Geen resultate gevind"},searching:function(){return"Besig…"},removeAllItems:function(){return"Verwyder alle items"}}}),n.define,n.require},event=new CustomEvent("dal-language-loaded",{lang:"af"});document.dispatchEvent(event);
3 |
--------------------------------------------------------------------------------
/db-init/01-grant-test-permissions.sql:
--------------------------------------------------------------------------------
1 | -- Grant permissions for the test database
2 | -- Django's test runner creates test databases with a 'test_' prefix
3 | -- This grants the database user permission to create and use test databases
4 |
5 | -- Note: CREATE and DROP privileges must be granted globally (on *.*) in MariaDB as it doesn't
6 | -- support database name patterns for these grants. This allows Django to create and drop
7 | -- test databases with any name (e.g., test_auctions, test_auctions_2 for parallel tests)
8 |
9 | -- Check if user already has these privileges, if not grant them
10 | -- This makes the script idempotent for existing dev systems with persistent volumes
11 | GRANT CREATE, DROP ON *.* TO 'mysqluser'@'%';
12 |
13 | -- Grant full privileges on any database starting with 'test_'
14 | -- This pattern matching is supported for table-level privileges in MariaDB
15 | GRANT ALL PRIVILEGES ON `test_%`.* TO 'mysqluser'@'%';
16 |
17 | FLUSH PRIVILEGES;
18 |
--------------------------------------------------------------------------------
/auctions/static/autocomplete_light/i18n/bn.js:
--------------------------------------------------------------------------------
1 | /*! Select2 4.1.0-rc.0 | https://github.com/select2/select2/blob/master/LICENSE.md */
2 | var dalLoadLanguage=function(n){var e;(e=n&&n.fn&&n.fn.select2&&n.fn.select2.amd?n.fn.select2.amd:e).define("select2/i18n/bn",[],function(){return{errorLoading:function(){return"ফলাফলগুলি লোড করা যায়নি।"},inputTooLong:function(n){n=n.input.length-n.maximum;return 1!=n?"অনুগ্রহ করে "+n+" টি অক্ষর মুছে দিন।":"অনুগ্রহ করে "+n+" টি অক্ষর মুছে দিন।"},inputTooShort:function(n){return n.minimum-n.input.length+" টি অক্ষর অথবা অধিক অক্ষর লিখুন।"},loadingMore:function(){return"আরো ফলাফল লোড হচ্ছে ..."},maximumSelected:function(n){var e=n.maximum+" টি আইটেম নির্বাচন করতে পারবেন।";return e=1!=n.maximum?n.maximum+" টি আইটেম নির্বাচন করতে পারবেন।":e},noResults:function(){return"কোন ফলাফল পাওয়া যায়নি।"},searching:function(){return"অনুসন্ধান করা হচ্ছে ..."}}}),e.define,e.require},event=new CustomEvent("dal-language-loaded",{lang:"bn"});document.dispatchEvent(event);
3 |
--------------------------------------------------------------------------------
/auctions/templates/socialaccount/signup.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 |
3 | {% load i18n %}
4 | {% load crispy_forms_tags %}
5 | {% block title %}{% trans "Signup" %}{% endblock %}
6 |
7 | {% block content %}
8 |
{% trans "Sign Up" %}
9 |
10 |
{% blocktrans with provider_name=account.get_provider.name site_name=site.name %}You are about to use your {{provider_name}} account to login to
11 | {{site_name}}.
12 | {% endblocktrans %}
13 |
14 | If you are signing up for the first time and seeing this page, please enter the following information:
15 |
23 | {% endblock %}
24 |
--------------------------------------------------------------------------------