diff --git a/RIGS/models.py b/RIGS/models.py index 394c9d18..c082e9c0 100644 --- a/RIGS/models.py +++ b/RIGS/models.py @@ -86,6 +86,8 @@ class Venue(models.Model, RevisionMixin): three_phase_available = models.BooleanField(default=False) notes = models.TextField(blank=True, null=True) + address = models.TextField(blank=True, null=True) + def __str__(self): string = self.name if self.notes and len(self.notes) > 0: diff --git a/RIGS/templates/RIGS/venue_detail.html b/RIGS/templates/RIGS/venue_detail.html new file mode 100644 index 00000000..73511815 --- /dev/null +++ b/RIGS/templates/RIGS/venue_detail.html @@ -0,0 +1,52 @@ +{% extends request.is_ajax|yesno:"base_ajax.html,base.html" %} +{% load widget_tweaks %} + +{% block title %}{{ object.name }}{% endblock %} + +{% block content %} +
+ {% if not request.is_ajax %} +

{{ object.name }}

+
+ Edit +
+ {% endif %} +
+
+
+
Name
+
{{ object.name }}
+ +
Phone
+
{{ object.phone }}
+ +
Email
+
{{ object.email }}
+ +
Address
+
{{ object.address|linebreaksbr }}
+ +
Notes
+
{{ object.notes|linebreaksbr }}
+
+
+
+
+{% endblock %} + +{% if request.is_ajax %} + {% block footer %} +
+
+ Lasted edited at {{ object.last_edited_at|date:"SHORT_DATE_FORMAT" }} by {{ object.last_edited_by }} +
+
+
+ Edit +
+
+
+ {% endblock %} +{% endif %} \ No newline at end of file diff --git a/RIGS/templates/RIGS/venue_form.html b/RIGS/templates/RIGS/venue_form.html new file mode 100644 index 00000000..d24a0a22 --- /dev/null +++ b/RIGS/templates/RIGS/venue_form.html @@ -0,0 +1,68 @@ +{% extends request.is_ajax|yesno:'base_ajax.html,base.html' %} +{% load widget_tweaks %} + +{% block title %}{{ object.pk|yesno:"Edit,Add" }} Venue{% endblock %} + +{% block content %} +
+

{{ object.pk|yesno:"Edit,Add" }} Venue

+ +
{% csrf_token %} +
+
+ {% include 'form_errors.html' %} +
+ + +
+ {% render_field form.name class+="form-control" placeholder=form.name.label %} +
+
+ +
+ + +
+ {% render_field form.phone class+="form-control" type="tel" placeholder=form.phone.label %} +
+
+ + +
+ + +
+ {% render_field form.email class+="form-control" type="email" placeholder=form.email.label %} +
+
+ +
+ + +
+ {% render_field form.address class+="form-control" placeholder=form.address.label %} +
+
+
+ +
+
+ + +
+ {% render_field form.notes class+="form-control" placeholder=form.notes.label %} +
+
+
+
+
+ +
+
+
+{% endblock %} \ No newline at end of file diff --git a/RIGS/templates/RIGS/venue_list.html b/RIGS/templates/RIGS/venue_list.html new file mode 100644 index 00000000..2d787a7a --- /dev/null +++ b/RIGS/templates/RIGS/venue_list.html @@ -0,0 +1,68 @@ +{% extends request.is_ajax|yesno:"base_ajax.html,base.html" %} +{% load widget_tweaks %} +{% load paginator from filters %} +{% load url_replace from filters %} +{% load orderby from filters %} + +{% block title %}Venues{% endblock %} + +{% block content %} +
+
+
+

Venues

+
+
+ New +
+
+
+
+ +
+
+
+
+
{% paginator %}
+
+ + + + + + + + + + + + + {% for object in object_list %} + + + + + + + + + {% empty %} + + + + + {% endfor %} + +
NameEmailPhoneNotes
{{ object.pk }}{{ object.name }}{{ object.email }}{{ object.phone }}{{ object.notes|yesno|capfirst }} + + + + +
No venues found
+
+
{% paginator %}
+
+{% endblock %} \ No newline at end of file diff --git a/RIGS/urls.py b/RIGS/urls.py index 65bd7bc7..eb7d1398 100644 --- a/RIGS/urls.py +++ b/RIGS/urls.py @@ -38,5 +38,19 @@ urlpatterns = patterns('', url(r'^organisations/(?P\d+)/edit/$', permission_required_with_403('RIGS.change_organisation')(views.OrganisationUpdate.as_view()), name='organisation_update'), + + # Venues + url(r'^venues/$', + permission_required_with_403('RIGS.view_venue')(views.VenueList.as_view()), + name='venue_list'), + url(r'^venues/add/$', + permission_required_with_403('RIGS.add_venue')(views.VenueCreate.as_view()), + name='venue_create'), + url(r'^venues/(?P\d+)/$', + permission_required_with_403('RIGS.view_venue')(views.VenueDetail.as_view()), + name='venue_detail'), + url(r'^venues/(?P\d+)/edit/$', + permission_required_with_403('RIGS.change_venue')(views.VenueUpdate.as_view()), + name='venue_update'), ) diff --git a/RIGS/views.py b/RIGS/views.py index 8484754f..60222db0 100644 --- a/RIGS/views.py +++ b/RIGS/views.py @@ -12,18 +12,23 @@ def login(request, **kwargs): return HttpResponseRedirect(request.REQUEST.get('next', '/')) else: from django.contrib.auth.views import login + return login(request) + """ Called from a modal window (e.g. when an item is submitted to an event/invoice). May optionally also include some javascript in a success message to cause a load of the new information onto the page. """ + + class CloseModal(generic.TemplateView): template_name = 'closemodal.html' def get_context_data(self, **kwargs): from django.contrib import messages + return {'messages', messages.get_messages(self.request)} @@ -42,9 +47,11 @@ class PersonList(generic.ListView): object_list = object_list.order_by(orderBy) return object_list + class PersonDetail(generic.DetailView): model = models.Person + class PersonCreate(generic.CreateView): model = models.Person @@ -53,6 +60,7 @@ class PersonCreate(generic.CreateView): 'pk': self.object.pk, }) + class PersonUpdate(generic.UpdateView): model = models.Person @@ -77,9 +85,11 @@ class OrganisationList(generic.ListView): object_list = object_list.order_by(orderBy) return object_list + class OrganisationDetail(generic.DetailView): model = models.Organisation + class OrganisationCreate(generic.CreateView): model = models.Organisation @@ -88,10 +98,49 @@ class OrganisationCreate(generic.CreateView): 'pk': self.object.pk, }) + class OrganisationUpdate(generic.UpdateView): model = models.Organisation def get_success_url(self): return reverse_lazy('organisation_detail', kwargs={ 'pk': self.object.pk, + }) + + +class VenueList(generic.ListView): + model = models.Venue + paginate_by = 20 + + def get_queryset(self): + q = self.request.GET.get('q', "") + if len(q) >= 3: + object_list = self.model.objects.filter(Q(name__icontains=q) | Q(address__icontains=q)) + else: + object_list = self.model.objects.all() + orderBy = self.request.GET.get('orderBy', "") + if orderBy is not "": + object_list = object_list.order_by(orderBy) + return object_list + + +class VenueDetail(generic.DetailView): + model = models.Venue + + +class VenueCreate(generic.CreateView): + model = models.Venue + + def get_success_url(self): + return reverse_lazy('venue_detail', kwargs={ + 'pk': self.object.pk, + }) + + +class VenueUpdate(generic.UpdateView): + model = models.Venue + + def get_success_url(self): + return reverse_lazy('venue_detail', kwargs={ + 'pk': self.object.pk, }) \ No newline at end of file diff --git a/db.sqlite3 b/db.sqlite3 index c9bb615e..4845327b 100644 Binary files a/db.sqlite3 and b/db.sqlite3 differ