mirror of
https://github.com/nottinghamtec/PyRIGS.git
synced 2026-01-16 21:12:13 +00:00
Add URLField for linking to uploaded quotes
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
# Generated by Django 3.2.16 on 2022-12-16 12:10
|
||||
# Generated by Django 3.2.16 on 2022-12-16 14:41
|
||||
|
||||
import RIGS.validators
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import versioning.versioning
|
||||
@@ -25,12 +26,13 @@ class Migration(migrations.Migration):
|
||||
('end_time', models.TimeField(blank=True, null=True)),
|
||||
('purchase_order', models.CharField(blank=True, default='', max_length=255, verbose_name='PO')),
|
||||
('insurance_value', models.DecimalField(decimal_places=2, max_digits=10)),
|
||||
('quote', models.URLField(default='', validators=[RIGS.validators.validate_url])),
|
||||
('events', models.ManyToManyField(to='RIGS.Event')),
|
||||
('organisation', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='RIGS.organisation')),
|
||||
('person', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='RIGS.person')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
'permissions': [('subhire_finance', 'Can see financial data for subhire - insurance values')],
|
||||
},
|
||||
bases=(models.Model, versioning.versioning.RevisionMixin),
|
||||
),
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
# Generated by Django 3.2.16 on 2022-12-16 14:22
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('RIGS', '0046_subhire'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name='subhire',
|
||||
options={'permissions': [('subhire_finance', 'Can see financial data for subhire - insurance values')]},
|
||||
),
|
||||
]
|
||||
@@ -8,7 +8,7 @@ from urllib.parse import urlparse
|
||||
|
||||
import pytz
|
||||
from django import forms
|
||||
from django.db.models import Q, F
|
||||
from django.db.models import Q
|
||||
from django.conf import settings
|
||||
from django.contrib.auth.models import AbstractUser
|
||||
from django.core.exceptions import ValidationError
|
||||
@@ -17,9 +17,10 @@ from django.urls import reverse
|
||||
from django.utils import timezone
|
||||
from django.utils.functional import cached_property
|
||||
from reversion import revisions as reversion
|
||||
from reversion.models import Version
|
||||
from versioning.versioning import RevisionMixin
|
||||
|
||||
from .validators import validate_url
|
||||
|
||||
|
||||
def filter_by_pk(filt, query):
|
||||
# try and parse an int
|
||||
@@ -621,6 +622,8 @@ class SubhireManager(models.Manager):
|
||||
class Subhire(BaseEvent):
|
||||
insurance_value = models.DecimalField(max_digits=10, decimal_places=2) # TODO Validate if this is over notifiable threshold
|
||||
events = models.ManyToManyField(Event)
|
||||
quote = models.URLField(default='', validators=[validate_url])
|
||||
|
||||
|
||||
objects = SubhireManager()
|
||||
|
||||
@@ -774,14 +777,6 @@ class Payment(models.Model, RevisionMixin):
|
||||
return f"payment of £{self.amount}"
|
||||
|
||||
|
||||
def validate_url(value):
|
||||
if not value:
|
||||
return # Required error is done the field
|
||||
obj = urlparse(value)
|
||||
if obj.hostname not in ('nottinghamtec.sharepoint.com'):
|
||||
raise ValidationError('URL must point to a location on the TEC Sharepoint')
|
||||
|
||||
|
||||
@reversion.register
|
||||
class RiskAssessment(models.Model, RevisionMixin):
|
||||
SMALL = (0, 'Small')
|
||||
|
||||
@@ -44,6 +44,8 @@
|
||||
<dt class="col-sm-6">Insurance Value</dt>
|
||||
<dd class="col-sm-6">£{{ object.insurance_value }}</dd>
|
||||
{% endif %}
|
||||
<dt class="col-sm-6">Quote</dt>
|
||||
<dd class="col-sm-6"><a href="{{ object.quote }}">View</a></dd>
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -188,6 +188,10 @@
|
||||
If this value is greater than £50,000 then please email productions@nottinghamtec.co.uk in addition to complete the additional insurance requirements
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="{{ form.quote.id_for_label }}" class="col-sm-6 col-form-label">{{ form.quote.label }} (TEC SharePoint link)</label>
|
||||
<div class="col-sm-12">{% render_field form.quote class+="form-control" %}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
from datetime import datetime, timedelta, date
|
||||
import calendar
|
||||
from calendar import HTMLCalendar
|
||||
from RIGS.models import BaseEvent, Event, Subhire
|
||||
from RIGS.models import Event, Subhire
|
||||
|
||||
|
||||
class Calendar(HTMLCalendar):
|
||||
def __init__(self, year=None, month=None):
|
||||
|
||||
10
RIGS/validators.py
Normal file
10
RIGS/validators.py
Normal file
@@ -0,0 +1,10 @@
|
||||
from urllib.parse import urlparse
|
||||
from django.core.exceptions import ValidationError
|
||||
|
||||
|
||||
def validate_url(value):
|
||||
if not value:
|
||||
return # Required error is done the field
|
||||
obj = urlparse(value)
|
||||
if obj.hostname not in ('nottinghamtec.sharepoint.com'):
|
||||
raise ValidationError('URL must point to a location on the TEC Sharepoint')
|
||||
@@ -2,7 +2,6 @@ import copy
|
||||
import datetime
|
||||
import re
|
||||
import premailer
|
||||
import simplejson
|
||||
|
||||
from django.conf import settings
|
||||
from django.contrib import messages
|
||||
@@ -12,12 +11,9 @@ from django.core.exceptions import SuspiciousOperation
|
||||
from django.core.mail import EmailMultiAlternatives
|
||||
from django.db.models import Q
|
||||
from django.http import HttpResponse
|
||||
from django.shortcuts import get_object_or_404
|
||||
from django.template.loader import get_template
|
||||
from django.urls import reverse
|
||||
from django.urls import reverse_lazy
|
||||
from django.utils import timezone
|
||||
from django.utils.html import mark_safe
|
||||
from django.utils.decorators import method_decorator
|
||||
from django.views import generic
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
from django.urls import reverse_lazy
|
||||
from django.views import generic
|
||||
from PyRIGS.views import OEmbedView, is_ajax, ModalURLMixin, PrintView, get_related
|
||||
from PyRIGS.views import ModalURLMixin, get_related
|
||||
from RIGS import models, forms
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user