mirror of
https://github.com/nottinghamtec/PyRIGS.git
synced 2026-01-17 05:22:16 +00:00
Enabled event create button
Added MIC field to the event form Added the ability to specify the fields you want to query in an api request Changes to the user profile to enable queries via the API
This commit is contained in:
@@ -1,9 +1,11 @@
|
|||||||
|
import hashlib
|
||||||
|
import datetime
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.contrib.auth.models import AbstractUser
|
from django.contrib.auth.models import AbstractUser
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
import hashlib
|
|
||||||
import reversion
|
import reversion
|
||||||
import datetime
|
|
||||||
|
|
||||||
|
|
||||||
# Create your models here.
|
# Create your models here.
|
||||||
@@ -18,6 +20,9 @@ class Profile(AbstractUser):
|
|||||||
url = "https://www.gravatar.com/avatar/" + hashlib.md5(self.email).hexdigest() + "?d=identicon&s=500"
|
url = "https://www.gravatar.com/avatar/" + hashlib.md5(self.email).hexdigest() + "?d=identicon&s=500"
|
||||||
return url
|
return url
|
||||||
|
|
||||||
|
@property
|
||||||
|
def name(self):
|
||||||
|
return self.get_full_name() + ' "' + self.initials + '"'
|
||||||
|
|
||||||
class RevisionMixin(object):
|
class RevisionMixin(object):
|
||||||
@property
|
@property
|
||||||
@@ -163,7 +168,7 @@ class Event(models.Model, RevisionMixin):
|
|||||||
)
|
)
|
||||||
|
|
||||||
name = models.CharField(max_length=255)
|
name = models.CharField(max_length=255)
|
||||||
person = models.ForeignKey('Person')
|
person = models.ForeignKey('Person', null=True, blank=True)
|
||||||
organisation = models.ForeignKey('Organisation', blank=True, null=True)
|
organisation = models.ForeignKey('Organisation', blank=True, null=True)
|
||||||
venue = models.ForeignKey('Venue')
|
venue = models.ForeignKey('Venue')
|
||||||
description = models.TextField(blank=True, null=True)
|
description = models.TextField(blank=True, null=True)
|
||||||
|
|||||||
@@ -76,74 +76,135 @@
|
|||||||
{% include 'form_errors.html' %}
|
{% include 'form_errors.html' %}
|
||||||
<form class="form-horizontal" role="form" method="POST">{% csrf_token %}
|
<form class="form-horizontal" role="form" method="POST">{% csrf_token %}
|
||||||
{% render_field form.is_rig style="display: none" %}
|
{% render_field form.is_rig style="display: none" %}
|
||||||
{% if not object.pk %}
|
{% if not object.pk %}
|
||||||
<div class="col-md-12 well">
|
<div class="col-md-12 well">
|
||||||
<div class="form-group" id="is_rig-selector">
|
<div class="form-group" id="is_rig-selector">
|
||||||
<div class="col-sm-12">
|
<div class="col-sm-12">
|
||||||
<span class="col-sm-6">
|
<span class="col-sm-6">
|
||||||
<button type="button" class="btn btn-primary col-xs-12" data-is_rig="1">Rig</button>
|
<button type="button" class="btn btn-primary col-xs-12" data-is_rig="1">Rig</button>
|
||||||
</span>
|
</span>
|
||||||
<span class="col-sm-6">
|
<span class="col-sm-6">
|
||||||
<button type="button" class="btn btn-info col-xs-12" data-is_rig="0">Non-Rig</button>
|
<button type="button" class="btn btn-info col-xs-12" data-is_rig="0">Non-Rig</button>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
</div>
|
||||||
<div class="col-md-6">
|
{% endif %}
|
||||||
<div class="panel panel-default form-hws form-is_rig">
|
<div class="col-md-6">
|
||||||
<div class="panel-heading">Contact Details</div>
|
<div class="panel panel-default form-hws form-is_rig {% if object.pk and not object.is_rig %}hidden{% endif %}">
|
||||||
<div class="panel-body">
|
<div class="panel-heading">Contact Details</div>
|
||||||
<div class="form-group">
|
<div class="panel-body">
|
||||||
<label for="{{ form.person.id_for_label }}"
|
<div class="form-group">
|
||||||
class="col-sm-4 control-label">{{ form.person.label }}</label>
|
<label for="{{ form.person.id_for_label }}"
|
||||||
|
class="col-sm-4 control-label">{{ form.person.label }}</label>
|
||||||
|
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<input type="hidden" id="{{ form.person.id_for_label }}" name="{{ form.person.name }}"
|
<input type="hidden" id="{{ form.person.id_for_label }}" name="{{ form.person.name }}"
|
||||||
value="{{ form.person.value|default_if_none:"" }}"/>
|
value="{{ form.person.value|default_if_none:"" }}"/>
|
||||||
|
|
||||||
<div class="col-xs-9">
|
<div class="col-xs-9">
|
||||||
<input type="text" id="{{ form.person.id_for_label }}-input"
|
<input type="text" id="{{ form.person.id_for_label }}-input"
|
||||||
class="form-control autocomplete-json"
|
class="form-control autocomplete-json"
|
||||||
data-valueurl="{% if form.person.value %}
|
data-valueurl="{% if form.person.value %}
|
||||||
{% url 'api_secure' model='person' pk=form.person.value %}
|
{% url 'api_secure' model='person' pk=form.person.value %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{% url 'api_secure' model='person' %}
|
{% url 'api_secure' model='person' %}
|
||||||
{% endif %}?fields=name"
|
{% endif %}?fields=name"
|
||||||
data-sourceurl="{% url 'api_secure' model='person' %}"
|
data-sourceurl="{% url 'api_secure' model='person' %}"
|
||||||
data-target="{{ form.person.id_for_label }}"/>
|
data-target="{{ form.person.id_for_label }}"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-xs-3 align-right">
|
<div class="col-xs-3 align-right">
|
||||||
<button type="button" class="btn btn-default"
|
<button type="button" class="btn btn-default"
|
||||||
data-url="{#% url invoiceitem_add object.pk %#}"
|
data-url="{#% url invoiceitem_add object.pk %#}"
|
||||||
data-toggle="modal" data-target="#itemModal">
|
data-toggle="modal" data-target="#itemModal">
|
||||||
<span class="glyphicon glyphicon-plus"></span>
|
<span class="glyphicon glyphicon-plus"></span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
</div>
|
||||||
<label for="{{ form.organisation.id_for_label }}"
|
<div class="form-group">
|
||||||
class="col-sm-4 control-label">{{ form.organisation.label }}</label>
|
<label for="{{ form.organisation.id_for_label }}"
|
||||||
|
class="col-sm-4 control-label">{{ form.organisation.label }}</label>
|
||||||
|
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<input type="hidden" id="{{ form.organisation.id_for_label }}"
|
<input type="hidden" id="{{ form.organisation.id_for_label }}"
|
||||||
name="{{ form.organisation.name }}"
|
name="{{ form.organisation.name }}"
|
||||||
value="{{ form.organisation.value|default_if_none:"" }}"/>
|
value="{{ form.organisation.value|default_if_none:"" }}"/>
|
||||||
|
|
||||||
<div class="col-xs-9">
|
<div class="col-xs-9">
|
||||||
<input type="text" id="{{ form.organisation.id_for_label }}-input"
|
<input type="text" id="{{ form.organisation.id_for_label }}-input"
|
||||||
class="form-control autocomplete-json"
|
class="form-control autocomplete-json"
|
||||||
data-valueurl="{% if form.organisation.value %}
|
data-valueurl="{% if form.organisation.value %}
|
||||||
{% url 'api_secure' model='organisation' pk=form.organisation.value %}
|
{% url 'api_secure' model='organisation' pk=form.organisation.value %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{% url 'api_secure' model='organisation' %}
|
{% url 'api_secure' model='organisation' %}
|
||||||
{% endif %}?fields=name"
|
{% endif %}?fields=name"
|
||||||
data-sourceurl="{% url 'api_secure' model='organisation' %}"
|
data-sourceurl="{% url 'api_secure' model='organisation' %}"
|
||||||
data-target="{{ form.organisation.id_for_label }}"/>
|
data-target="{{ form.organisation.id_for_label }}"/>
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-3 align-right">
|
||||||
|
<button type="button" class="btn btn-default"
|
||||||
|
data-url="{#% url invoiceitem_add object.pk %#}"
|
||||||
|
data-toggle="modal" data-target="#itemModal">
|
||||||
|
<span class="glyphicon glyphicon-plus"></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="panel panel-default form-hws form-non_rig">
|
||||||
|
<div class="panel-heading">Event Description</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="{{ form.description.id_for_label }}"
|
||||||
|
class="col-sm-4 control-label">{{ form.description.label }}</label>
|
||||||
|
|
||||||
|
<div class="col-sm-8">
|
||||||
|
{% render_field form.description class+="form-control" %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /.col-md-6 -->
|
||||||
|
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="panel panel-default form-hws form-non_rig">
|
||||||
|
<div class="panel-heading">Event Details</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<div id="form-hws">
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="{{ form.name.id_for_label }}"
|
||||||
|
class="col-sm-4 control-label">{{ form.name.label }}</label>
|
||||||
|
|
||||||
|
<div class="col-sm-8">
|
||||||
|
{% render_field form.name class+="form-control" %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="{{ form.venue.id_for_label }}"
|
||||||
|
class="col-sm-4 control-label">{{ form.venue.label }}</label>
|
||||||
|
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<div class="row">
|
||||||
|
<input type="hidden" id="{{ form.venue.id_for_label }}" name="{{ form.venue.name }}"
|
||||||
|
value="{{ form.venue.value|default_if_none:"" }}"/>
|
||||||
|
|
||||||
|
<div class="col-xs-9">
|
||||||
|
<input type="text" id="{{ form.venue.id_for_label }}-input"
|
||||||
|
class="form-control autocomplete-json"
|
||||||
|
data-valueurl="{% if form.venue.value %}
|
||||||
|
{% url 'api_secure' model='venue' pk=form.venue.value %}
|
||||||
|
{% else %}
|
||||||
|
{% url 'api_secure' model='venue' %}
|
||||||
|
{% endif %}?fields=name"
|
||||||
|
data-sourceurl="{% url 'api_secure' model='venue' %}"
|
||||||
|
data-target="{{ form.venue.id_for_label }}"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-xs-3 align-right">
|
<div class="col-xs-3 align-right">
|
||||||
<button type="button" class="btn btn-default"
|
<button type="button" class="btn btn-default"
|
||||||
@@ -155,149 +216,108 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="panel panel-default form-hws form-non_rig">
|
|
||||||
<div class="panel-heading">Event Description</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="{{ form.description.id_for_label }}"
|
<label for="{{ form.start_date.id_for_label }}"
|
||||||
class="col-sm-4 control-label">{{ form.description.label }}</label>
|
class="col-sm-4 control-label">{{ form.start_date.label }}</label>
|
||||||
|
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-4">
|
||||||
{% render_field form.description class+="form-control" %}
|
<input type="date" name="{{ form.start_date.name }}"
|
||||||
|
id="{{ form.start_date.id_for_label }}"
|
||||||
|
class="form-control start_date" required
|
||||||
|
value="{{ form.start_date.value|date:"Y-m-d" }}"/>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4">
|
||||||
|
{% render_field form.start_time type="time" class+="form-control" %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="form-group">
|
||||||
</div>
|
<label for="{{ form.end_date.id_for_label }}"
|
||||||
</div>
|
class="col-sm-4 control-label">{{ form.end_date.label }}</label>
|
||||||
<!-- /.col-md-6 -->
|
|
||||||
|
|
||||||
<div class="col-md-6">
|
<div class="col-sm-4">
|
||||||
<div class="panel panel-default form-hws form-non_rig">
|
<input type="date" name="{{ form.end_date.name }}" id="{{ form.end_date.id_for_label }}"
|
||||||
<div class="panel-heading">Event Details</div>
|
class="form-control end_date" required
|
||||||
<div class="panel-body">
|
value="{{ form.end_date.value|date:"Y-m-d" }}"/>
|
||||||
<div id="form-hws">
|
</div>
|
||||||
|
<div class="col-sm-4">
|
||||||
|
{% render_field form.end_time type="time" class+="form-control end_time" %}
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-offset-8 col-sm-4">
|
||||||
|
<div class="btn-group btn-group-justified">
|
||||||
|
<btn class="btn btn-default btn-xs" onclick="setTime23Hours()">23:00</btn>
|
||||||
|
<btn class="btn btn-default btn-xs" onclick="setTime02Hours()">02:00</btn>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{# Rig only information #}
|
||||||
|
<div class="form-is_rig {% if object.pk and not object.is_rig %}hidden{% endif %}">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="{{ form.name.id_for_label }}"
|
<label for="{{ form.access_at.id_for_label }}"
|
||||||
class="col-sm-4 control-label">{{ form.name.label }}</label>
|
class="col-sm-4 control-label">{{ form.access_at.label }}</label>
|
||||||
|
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
{% render_field form.name class+="form-control" %}
|
{% render_field form.access_at type="datetime-local" class+="form-control" %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="{{ form.venue.id_for_label }}"
|
<label for="{{ form.meet_at.id_for_label }}"
|
||||||
class="col-sm-4 control-label">{{ form.venue.label }}</label>
|
class="col-sm-4 control-label">{{ form.meet_at.label }}</label>
|
||||||
|
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<div class="row">
|
{% render_field form.meet_at type="datetime-local" class+="form-control" %}
|
||||||
<input type="hidden" id="{{ form.venue.id_for_label }}" name="{{ form.venue.name }}"
|
</div>
|
||||||
value="{{ form.venue.value|default_if_none:"" }}"/>
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
<div class="col-xs-9">
|
<div class="col-sm-offset-4 col-sm-8">
|
||||||
<input type="text" id="{{ form.venue.id_for_label }}-input"
|
<div class="checkbox">
|
||||||
class="form-control autocomplete-json"
|
<label>
|
||||||
data-valueurl="{% if form.venue.value %}
|
{% render_field form.dry_hire %}{{ form.dry_hire.label }}
|
||||||
{% url 'api_secure' model='venue' pk=form.venue.value %}
|
</label>
|
||||||
{% else %}
|
|
||||||
{% url 'api_secure' model='venue' %}
|
|
||||||
{% endif %}?fields=name"
|
|
||||||
data-sourceurl="{% url 'api_secure' model='venue' %}"
|
|
||||||
data-target="{{ form.venue.id_for_label }}"/>
|
|
||||||
</div>
|
|
||||||
<div class="col-xs-3 align-right">
|
|
||||||
<button type="button" class="btn btn-default"
|
|
||||||
data-url="{#% url invoiceitem_add object.pk %#}"
|
|
||||||
data-toggle="modal" data-target="#itemModal">
|
|
||||||
<span class="glyphicon glyphicon-plus"></span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="{{ form.start_date.id_for_label }}"
|
<label for="{{ form.status.id_for_label }}"
|
||||||
class="col-sm-4 control-label">{{ form.start_date.label }}</label>
|
class="col-sm-4 control-label">{{ form.status.label }}</label>
|
||||||
|
|
||||||
<div class="col-sm-4">
|
<div class="col-sm-8">
|
||||||
<input type="date" name="{{ form.start_date.name }}"
|
{% render_field form.status class+="form-control" %}
|
||||||
id="{{ form.start_date.id_for_label }}"
|
|
||||||
class="form-control start_date" required
|
|
||||||
value="{{ form.start_date.value|date:"Y-m-d" }}"/>
|
|
||||||
</div>
|
|
||||||
<div class="col-sm-4">
|
|
||||||
{% render_field form.start_time type="time" class+="form-control" %}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="{{ form.end_date.id_for_label }}"
|
<label for="{{ form.mic.id_for_label }}"
|
||||||
class="col-sm-4 control-label">{{ form.end_date.label }}</label>
|
class="col-sm-4 control-label">{{ form.mic.label }}</label>
|
||||||
|
|
||||||
<div class="col-sm-4">
|
<div class="col-sm-8">
|
||||||
<input type="date" name="{{ form.end_date.name }}" id="{{ form.end_date.id_for_label }}"
|
<input type="hidden" id="{{ form.mic.id_for_label }}" name="{{ form.mic.name }}"
|
||||||
class="form-control end_date" required
|
value="{{ form.mic.value|default_if_none:"" }}"/>
|
||||||
value="{{ form.end_date.value|date:"Y-m-d" }}"/>
|
|
||||||
</div>
|
<input type="text" id="{{ form.mic.id_for_label }}-input"
|
||||||
<div class="col-sm-4">
|
class="form-control autocomplete-json"
|
||||||
{% render_field form.end_time type="time" class+="form-control end_time" %}
|
data-valueurl="
|
||||||
</div>
|
{% if form.mic.value %}
|
||||||
<div class="col-sm-offset-8 col-sm-4">
|
{% url 'api_secure' model='mic' pk=form.mic.value %}
|
||||||
<div class="btn-group btn-group-justified">
|
{% else %}
|
||||||
<btn class="btn btn-default btn-xs" onclick="setTime23Hours()">23:00</btn>
|
{% url 'api_secure' model='mic' %}
|
||||||
<btn class="btn btn-default btn-xs" onclick="setTime02Hours()">02:00</btn>
|
{% endif %}?fields=name"
|
||||||
</div>
|
data-sourceurl="{% url 'api_secure' model='mic' %}?fields=first_name,username,initials"
|
||||||
|
data-target="{{ form.mic.id_for_label }}"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{#% include 'RIGS/eventitem_table.html' %#}
|
||||||
{# Rig only information #}
|
</div>
|
||||||
<div class="form-is_rig {% if object.pk and not object.is_rig %}hidden{% endif %}">
|
<div class="col-sm-12">
|
||||||
|
<div class="pull-right">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="{{ form.access_at.id_for_label }}"
|
<input type="submit" value="Submit" class="btn btn-primary"/>
|
||||||
class="col-sm-4 control-label">{{ form.access_at.label }}</label>
|
|
||||||
|
|
||||||
<div class="col-sm-8">
|
|
||||||
{% render_field form.access_at type="datetime-local" class+="form-control" %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="{{ form.meet_at.id_for_label }}"
|
|
||||||
class="col-sm-4 control-label">{{ form.meet_at.label }}</label>
|
|
||||||
|
|
||||||
<div class="col-sm-8">
|
|
||||||
{% render_field form.meet_at type="datetime-local" class+="form-control" %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<div class="col-sm-offset-4 col-sm-8">
|
|
||||||
<div class="checkbox">
|
|
||||||
<label>
|
|
||||||
{% render_field form.dry_hire %}{{ form.dry_hire.label }}
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="{{ form.status.id_for_label }}"
|
|
||||||
class="col-sm-4 control-label">{{ form.status.label }}</label>
|
|
||||||
|
|
||||||
<div class="col-sm-8">
|
|
||||||
{% render_field form.status class+="form-control" %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{#% include 'RIGS/eventitem_table.html' %#}
|
|
||||||
</div>
|
|
||||||
<div class="col-sm-12">
|
|
||||||
<div class="pull-right">
|
|
||||||
<div class="form-group">
|
|
||||||
<input type="submit" value="Submit" class="btn btn-primary"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</form>
|
</form>
|
||||||
<div class="modal fade" id="itemModal" role="dialog" aria-labelledby="itemModal" aria-hidded="true">
|
<div class="modal fade" id="itemModal" role="dialog" aria-labelledby="itemModal" aria-hidded="true">
|
||||||
<div class="modal-dialog">
|
<div class="modal-dialog">
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<h3>Rigboard</h3>
|
<h3>Rigboard</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-2">
|
<div class="col-sm-2">
|
||||||
<a href="{#% url 'person_create' %#}" class="btn btn-default pull-right">New <span
|
<a href="{% url 'event_create' %}" class="btn btn-default pull-right">New <span
|
||||||
class="glyphicon glyphicon-plus"></span></a>
|
class="glyphicon glyphicon-plus"></span></a>
|
||||||
</div>
|
</div>
|
||||||
{% comment %}
|
{% comment %}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ from RIGS import models
|
|||||||
import simplejson
|
import simplejson
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
def login(request, **kwargs):
|
def login(request, **kwargs):
|
||||||
if request.user.is_authenticated():
|
if request.user.is_authenticated():
|
||||||
@@ -156,6 +157,7 @@ class SecureAPIRequest(generic.View):
|
|||||||
'venue': models.Venue,
|
'venue': models.Venue,
|
||||||
'person': models.Person,
|
'person': models.Person,
|
||||||
'organisation': models.Organisation,
|
'organisation': models.Organisation,
|
||||||
|
'mic': models.Profile,
|
||||||
}
|
}
|
||||||
|
|
||||||
'''
|
'''
|
||||||
@@ -180,27 +182,31 @@ class SecureAPIRequest(generic.View):
|
|||||||
|
|
||||||
# Response format where applicable
|
# Response format where applicable
|
||||||
format = request.GET.get('format', 'json')
|
format = request.GET.get('format', 'json')
|
||||||
|
fields = request.GET.get('fields', None).split(',')
|
||||||
|
|
||||||
# Supply data for one record
|
# Supply data for one record
|
||||||
if pk:
|
if pk:
|
||||||
object = get_object_or_404(self.models[model], pk=pk)
|
object = get_object_or_404(self.models[model], pk=pk)
|
||||||
fields = request.GET.get('fields', None)
|
|
||||||
data = serializers.serialize(format, [object], fields=fields)
|
data = serializers.serialize(format, [object], fields=fields)
|
||||||
return HttpResponse(data, content_type="application/" + format)
|
return HttpResponse(data, content_type="application/" + format)
|
||||||
|
|
||||||
# Supply data for autocomplete ajax request in json form
|
# Supply data for autocomplete ajax request in json form
|
||||||
term = request.GET.get('term', None)
|
term = request.GET.get('term', None)
|
||||||
if term:
|
if term:
|
||||||
objects = self.models[model].objects.filter(name__icontains=term)[:20]
|
if fields is None:
|
||||||
|
fields = ['name']
|
||||||
|
all_objects = self.models[model].objects
|
||||||
results = []
|
results = []
|
||||||
for o in objects:
|
for field in fields:
|
||||||
data = {
|
filter = field + "__icontains"
|
||||||
'pk': o.pk,
|
objects = all_objects.filter(**{filter: term})
|
||||||
'value': o.pk,
|
for o in objects:
|
||||||
'label': o.name,
|
data = {
|
||||||
}
|
'pk': o.pk,
|
||||||
results.append(data)
|
'value': o.pk,
|
||||||
# todo: fix simplejson issues
|
'label': o.name,
|
||||||
|
}
|
||||||
|
results.append(data)
|
||||||
json = simplejson.dumps(results)
|
json = simplejson.dumps(results)
|
||||||
return HttpResponse(json, content_type="application/json") # Always json
|
return HttpResponse(json, content_type="application/json") # Always json
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user