2
0
Fork 0

Compare commits

..

2 Commits

Author SHA1 Message Date
Luca 5ac11e16e8 ci: check code style
continuous-integration/drone/push Build is failing Details
2024-05-03 22:05:06 +02:00
Luca c3f2c0bcfa chore: remove librabbitmq as dependency 2024-05-03 22:02:50 +02:00
52 changed files with 179 additions and 102 deletions

View File

@ -4,10 +4,14 @@ kind: pipeline
type: docker
name: default
clone:
disable: yes
steps:
- name: check style
image: python:3.12-alpine
commands:
- pip install black isort
- black --check .
- isort -c .
- name: deploy staging
image: ghcr.io/appleboy/drone-ssh
environment:
@ -26,6 +30,8 @@ steps:
when:
branch:
- main
event:
- push
- name: deploy production
image: ghcr.io/appleboy/drone-ssh
@ -35,7 +41,10 @@ steps:
when:
branch:
- live
event:
- push
trigger:
event:
- pull_request
- push

View File

@ -17,7 +17,6 @@ django-phonenumber-field==6.1.0
icalendar==4.0.9
idna==3.3
kombu==5.2.4
librabbitmq==2.0.0
packaging==21.3
persisting-theory==1.0
phonenumbers==8.12.47

4
setup.cfg Normal file
View File

@ -0,0 +1,4 @@
[isort]
line_length=88
profile=black
skip_gitignore=True

View File

@ -1,7 +1,7 @@
from django.contrib import admin
from django.contrib.admin import DateFieldListFilter
from .models import Room, Shift, Helper, ShiftRegistration, Message, LoginToken
from .models import Helper, LoginToken, Message, Room, Shift, ShiftRegistration
@admin.register(Room)

View File

@ -1,4 +1,5 @@
from django.conf import settings
from .models import LoginToken

View File

@ -1,8 +1,9 @@
from dynamic_preferences.registries import global_preferences_registry
from dynamic_preferences import types
import phonenumbers
import datetime
import phonenumbers
from dynamic_preferences import types
from dynamic_preferences.registries import global_preferences_registry
helper = types.Section("helper")

View File

@ -1,9 +1,10 @@
from django import forms
from .models import Helper
from phonenumber_field.formfields import PhoneNumberField
from phonenumber_field.validators import validate_international_phonenumber
from django.core.exceptions import ValidationError
from dynamic_preferences.registries import global_preferences_registry
from phonenumber_field.formfields import PhoneNumberField
from phonenumber_field.validators import validate_international_phonenumber
from .models import Helper
global_preferences = global_preferences_registry.manager()

View File

@ -1,8 +1,9 @@
# Generated by Django 4.0.4 on 2022-04-27 14:11
from django.db import migrations, models
import django.db.models.deletion
import phonenumber_field.modelfields
from django.db import migrations, models
import shiftregister.app.models

View File

@ -1,12 +1,13 @@
from django.db import models
import secrets
from django.shortcuts import reverse
from datetime import timedelta
from django.utils import timezone
from django.db.models import F, Count, Q, ExpressionWrapper, Case, When
from django.db import models
from django.db.models import Case, Count, ExpressionWrapper, F, Q, When
from django.shortcuts import reverse
from django.template import Context, Template
from phonenumber_field.modelfields import PhoneNumberField
from django.utils import timezone
from dynamic_preferences.registries import global_preferences_registry
from phonenumber_field.modelfields import PhoneNumberField
global_preferences = global_preferences_registry.manager()

View File

@ -2,7 +2,9 @@ from django.db.models.signals import pre_save
from django.dispatch import receiver
from django.shortcuts import reverse
from django.template import Context, Template
from shiftregister.core.signals import populate_nav
from .models import Message, Shift

View File

@ -1,7 +1,7 @@
from datetime import timezone
from django.conf import settings
import requests
import requests
from django.conf import settings
BASE_URL = "https://api.sipgate.com/v2"

View File

@ -1,7 +1,6 @@
import requests
from django.conf import settings
from phonenumber_field.phonenumber import PhoneNumber
import requests
BASE_URL = "https://api.sipgate.com/v2"

View File

@ -1,11 +1,12 @@
import sentry_sdk
from celery import shared_task
from .models import Message, ShiftRegistration
from django.conf import settings
from django.db import transaction
from django.utils import timezone
from dynamic_preferences.registries import global_preferences_registry
from .models import Message, ShiftRegistration
from .sipgate.sms import send as send_sms
import sentry_sdk
global_preferences = global_preferences_registry.manager()

View File

@ -1,18 +1,20 @@
from django.shortcuts import render, redirect, get_object_or_404
from .models import Shift, LoginToken, Helper, ShiftRegistration
from django.db import transaction
from django.db.models import F, Count, Q, ExpressionWrapper
from django.core.cache import cache
from .forms import RegisterForm, EmptyForm, AstaForm
from django.db.models.fields import DateTimeField
import datetime
import math
from datetime import timedelta
from django.utils import timezone
from django.conf import settings
from django.contrib import messages
import datetime
from .decorators import event_state
from django.core.cache import cache
from django.db import transaction
from django.db.models import Count, ExpressionWrapper, F, Q
from django.db.models.fields import DateTimeField
from django.shortcuts import get_object_or_404, redirect, render
from django.utils import timezone
from dynamic_preferences.registries import global_preferences_registry
import math
from .decorators import event_state
from .forms import AstaForm, EmptyForm, RegisterForm
from .models import Helper, LoginToken, Shift, ShiftRegistration
global_preferences = global_preferences_registry.manager()

View File

@ -1,4 +1,4 @@
from .signals import populate_nav
from .signals import populate_footer_nav, populate_nav
def nav(request):
@ -12,3 +12,14 @@ def nav(request):
return {
"nav_items": nav_items,
}
def footer_nav(request):
nav_items = [
item
for _, items in populate_footer_nav.send(sender=request)
if isinstance(items, list)
for item in items
]
return {"nav_items": nav_items}

View File

@ -1,3 +1,5 @@
from django.dispatch import Signal
populate_nav = Signal()
populate_footer_nav = Signal()

View File

@ -1,5 +1,6 @@
from django.contrib import admin
from django.shortcuts import reverse
from .models import *

View File

@ -1,7 +1,7 @@
# Generated by Django 4.0.4 on 2023-05-07 16:00
from django.db import migrations, models
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):

View File

@ -1,6 +1,7 @@
# Generated by Django 4.0.4 on 2023-05-13 17:28
from django.db import migrations, models
import shiftregister.fallback.models

View File

@ -1,11 +1,12 @@
from shiftregister.importer.models import *
from django.db.models import Max, Sum
from django.db.models import Count, Exists, OuterRef, ExpressionWrapper
from django.db.models.lookups import LessThan
from django.db.models.fields import DateTimeField
from base64 import urlsafe_b64encode
import math
import secrets
from base64 import urlsafe_b64encode
from django.db.models import Count, Exists, ExpressionWrapper, Max, OuterRef, Sum
from django.db.models.fields import DateTimeField
from django.db.models.lookups import LessThan
from shiftregister.importer.models import *
night_shift_query = Q(start_at__hour__gte=21) | Q(start_at__hour__lte=10)

View File

@ -1,14 +1,15 @@
from datetime import datetime
from celery import shared_task
from .models import FallbackAssignment
from shiftregister.app.models import ShiftRegistration
from django.conf import settings
from django.db import transaction
from django.db.models import Case, Count, ExpressionWrapper, F, Q, When
from django.utils import timezone
from dynamic_preferences.registries import global_preferences_registry
from django.db.models import F, Count, Q, ExpressionWrapper, Case, When
from datetime import datetime
from django.utils import timezone
from shiftregister.app.models import ShiftRegistration
from .models import FallbackAssignment
global_preferences = global_preferences_registry.manager()

View File

@ -1,8 +1,10 @@
from base64 import urlsafe_b64decode
from django.contrib.auth.decorators import login_required
from django.db.models import Count
from django.http import HttpResponse
from django.shortcuts import render, get_object_or_404
from django.shortcuts import get_object_or_404, render
from shiftregister.fallback.models import TeamMember
# Create your views here.

View File

@ -1,6 +1,7 @@
from .models import Feedback
from django.forms import ModelForm
from django import forms
from django.forms import ModelForm
from .models import Feedback
class FeedbackForm(ModelForm):

View File

@ -1,7 +1,7 @@
# Generated by Django 4.0.4 on 2023-05-25 14:16
from django.db import migrations, models
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):

View File

@ -1,8 +1,9 @@
# Generated by Django 4.0.4 on 2023-05-27 17:48
from django.db import migrations, models
import secrets
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [

View File

@ -1,5 +1,7 @@
from django.db import models
from secrets import token_urlsafe
from django.db import models
from shiftregister.app.models import Helper

View File

@ -1,6 +1,7 @@
from django.dispatch import receiver
from django.shortcuts import reverse
from dynamic_preferences.registries import global_preferences_registry
from shiftregister.core.signals import populate_nav
global_preferences = global_preferences_registry.manager()

View File

@ -1,9 +1,11 @@
from django.shortcuts import render, get_object_or_404
from .forms import FeedbackForm
from .models import Feedback, ShareToken
from shiftregister.app.models import LoginToken
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from django.shortcuts import get_object_or_404, render
from shiftregister.app.models import LoginToken
from .forms import FeedbackForm
from .models import Feedback, ShareToken
def feedback(request, token):

View File

@ -1,4 +1,5 @@
from django.contrib import admin
from .models import Calendar

View File

@ -1,9 +1,11 @@
from datetime import timezone
import requests
from django.conf import settings
from django.db import transaction
from icalendar import Calendar
from .models import Event, Room, Shift
import requests
def import_calendar(calendar):

View File

@ -1,7 +1,7 @@
# Generated by Django 4.0.4 on 2022-04-27 14:11
from django.db import migrations, models
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):

View File

@ -1,4 +1,5 @@
from django.db import models
from shiftregister.app.models import *

View File

@ -1,4 +1,5 @@
from celery import shared_task
from .importer import import_calendar
from .models import Calendar

View File

@ -1,7 +1,8 @@
from django.db import models
from django.db.models import Count, Case, F, When, Sum
from django.db.models import Case, Count, F, Sum, When
from django.http import HttpResponse
from shiftregister.app.models import Helper, Room, Shift, ShiftRegistration, Message
from shiftregister.app.models import Helper, Message, Room, Shift, ShiftRegistration
from shiftregister.fallback.models import FallbackAssignment
from shiftregister.importer.models import Event
@ -159,9 +160,11 @@ def metrics(request):
),
(
"worked_seconds_total",
worked_seconds_total.total_seconds()
if worked_seconds_total
else 0.0,
(
worked_seconds_total.total_seconds()
if worked_seconds_total
else 0.0
),
),
(
"worked_shifts_total",

View File

@ -1,7 +1,9 @@
from django.contrib import admin
from .models import Page
from pathlib import Path
from django.contrib import admin
from .models import Page
def reimport(modeladmin, request, queryset):
for page in queryset:

View File

@ -1,6 +1,7 @@
from django.apps import AppConfig
from pathlib import Path
from django.apps import AppConfig
class PagesConfig(AppConfig):
default_auto_field = "django.db.models.BigAutoField"

View File

@ -1,7 +1,9 @@
from pathlib import Path
from bs4 import BeautifulSoup
from django.core.management.base import BaseCommand, CommandError
from ...models import Page
from pathlib import Path
class Command(BaseCommand):

View File

@ -1,8 +1,9 @@
from django.views.generic import DetailView
from django.shortcuts import redirect
from django.core.validators import URLValidator
from django.core.exceptions import ValidationError
from django.core.validators import URLValidator
from django.http import HttpResponseNotFound
from django.shortcuts import redirect
from django.views.generic import DetailView
from .models import Page
# Create your views here.

View File

@ -10,12 +10,13 @@ For the full list of settings and their values, see
https://docs.djangoproject.com/en/4.0/ref/settings/
"""
from pathlib import Path
from os import getenv
from pathlib import Path
import sentry_sdk
from django.contrib.messages import constants as messages
from sentry_sdk.integrations.celery import CeleryIntegration
from sentry_sdk.integrations.django import DjangoIntegration
from django.contrib.messages import constants as messages
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent

View File

@ -1,7 +1,7 @@
# Generated by Django 4.0.4 on 2022-05-18 13:10
from django.db import migrations, models
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):

View File

@ -1,2 +1,3 @@
from django.db import models
from shiftregister.app.models import *

View File

@ -1,8 +1,10 @@
from datetime import timedelta
from django.db import models
from django.db.models import Case, Count, F, ExpressionWrapper, Q, Sum, When
from django.db.models import Case, Count, ExpressionWrapper, F, Q, Sum, When
from django.shortcuts import render
from django.utils import timezone
from .models import Helper, Shift, ShiftRegistration

View File

@ -1,4 +1,5 @@
from django.contrib import admin
from .models import IncomingMessage, RoomViewToken
# Register your models here.

View File

@ -1,5 +1,6 @@
from django import forms
from .models import ShiftRegistration, Helper
from .models import Helper, ShiftRegistration
# placeholder form for simple submit button use cases so we get csrf protection

View File

@ -1,7 +1,7 @@
# Generated by Django 4.0.4 on 2023-05-06 23:27
from django.db import migrations, models
import phonenumber_field.modelfields
from django.db import migrations, models
class Migration(migrations.Migration):

View File

@ -1,7 +1,8 @@
# Generated by Django 4.0.4 on 2023-05-18 15:15
from django.db import migrations, models
import django.db.models.deletion
from django.db import migrations, models
import shiftregister.team.models

View File

@ -1,7 +1,9 @@
import secrets
from django.db import models
from phonenumber_field.modelfields import PhoneNumberField
from shiftregister.app.models import *
import secrets
# Create your models here.

View File

@ -1,7 +1,9 @@
from django.dispatch import receiver
from django.shortcuts import reverse
from dynamic_preferences.registries import global_preferences_registry
from shiftregister.core.signals import populate_nav
from .models import IncomingMessage
global_preferences = global_preferences_registry.manager()

View File

@ -1,8 +1,10 @@
import sentry_sdk
from celery import shared_task
from django.conf import settings
from shiftregister.app.sipgate.history import list_incoming_sms
from .models import IncomingMessage
import sentry_sdk
@shared_task

View File

@ -1,6 +1,7 @@
from django import template
from re import ASCII, sub
from django import template
register = template.Library()

View File

@ -1,26 +1,27 @@
from django.shortcuts import render, get_object_or_404, redirect
from django.contrib.auth.decorators import login_required
from django.utils import timezone
from django.db.models.fields import DateTimeField
from django.db.models import F, Count, Q, ExpressionWrapper, Case, When
from .models import (
ShiftRegistration,
Room,
Shift,
Helper,
Message,
IncomingMessage,
RoomViewToken,
)
from django.views.generic import DetailView, ListView
from django.views.generic.edit import FormMixin
from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib import messages
from django.db import models, transaction
from django.core.paginator import Paginator
from .forms import BulkMessage, HelperShift, HelperMessage
from datetime import timedelta
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from django.contrib.auth.mixins import LoginRequiredMixin
from django.core.paginator import Paginator
from django.db import models, transaction
from django.db.models import Case, Count, ExpressionWrapper, F, Q, When
from django.db.models.fields import DateTimeField
from django.shortcuts import get_object_or_404, redirect, render
from django.utils import timezone
from django.views.generic import DetailView, ListView
from django.views.generic.edit import FormMixin
from .forms import BulkMessage, HelperMessage, HelperShift
from .models import (
Helper,
IncomingMessage,
Message,
Room,
RoomViewToken,
Shift,
ShiftRegistration,
)
# Create your views here.

View File

@ -13,6 +13,7 @@ Including another URLconf
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import include, path