from jira import JIRA
from rest_framework.authtoken.models import Token
+
from account.forms import AccountSettingsForm
from account.jira_util import SignatureMethod_RSA_SHA1
from account.models import UserProfile
if not request.user.is_authenticated:
return render(request, "dashboard/login.html", {'title': 'Authentication Required'})
template = "account/resource_list.html"
- resources = ResourceTemplate.objects.filter(
- owner=request.user).prefetch_related("configbundle_set")
- mapping = {}
- resource_list = []
- booking_mapping = {}
- for grb in resources:
- resource_list.append(grb)
- mapping[grb.id] = [{"id": x.id, "name": x.name} for x in grb.configbundle_set.all()]
- if Booking.objects.filter(resource__template=grb, end__gt=timezone.now()).exists():
- booking_mapping[grb.id] = "true"
+
+ active_bundles = [book.bundle for book in Booking.objects.filter(
+ owner=request.user, end__gte=timezone.now())]
+ active_resources = [bundle.template.id for bundle in active_bundles]
+ resource_list = list(ResourceTemplate.objects.filter(owner=request.user))
+
context = {
"resources": resource_list,
- "grb_mapping": mapping,
- "booking_mapping": booking_mapping,
+ "active_resources": active_resources,
"title": "My Resources"
}
return render(request, template, context=context)
config = get_object_or_404(ResourceTemplate, pk=config_id)
if not request.user.id == config.owner.id:
return HttpResponse('no') # 403?
- if Booking.objects.filter(config_bundle=config, end__gt=timezone.now()).exists():
+ if Booking.objects.filter(resource__template=config, end__gt=timezone.now()).exists():
return HttpResponse('no')
config.delete()
return HttpResponse('')
{
'title': "Lab Overview",
'lab': lab,
- 'hostprofiles': lab.hostprofiles.all(),
+ 'hostprofiles': ResourceProfile.objects.filter(labs=lab),
'images': images,
}
)
var formData = ajaxForm.serialize();
req = new XMLHttpRequest();
var url = "delete/" + current_config_id;
+ req.onreadystatechange = function() {
+ if (this.readyState == 4 && this.status == 200) {
+ location.reload();
+ }
+ };
req.open("POST", url, true);
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
req.onerror = function() { alert("problem submitting form"); }
{% endfor %}
</div>
<script>
- var grb_mapping = {{grb_mapping|safe|default:"{}"}};
- var booking_mapping = {{booking_mapping|safe|default:"{}"}};
+ var active_resources = {{active_resources|safe|default:"{}"}}
var current_resource_id = -1;
function delete_resource(resource_id) {
document.getElementById("confirm_delete_button").removeAttribute("disabled");
- var configs = grb_mapping[resource_id];
var warning = document.createTextNode("Are You Sure?");
var warning_subtext = document.createTextNode("This cannot be undone");
- if(booking_mapping[resource_id]){
- var warning = document.createTextNode("This resource is being used. It cannot be deleted.");
+ if(active_resources[resource_id]){
+ var warning = document.createTextNode("This resource is being used or is scheduled to be used. It cannot be deleted.");
var warning_subtext = document.createTextNode("If your booking just ended, you may need to give us a few minutes to clean it up before this can be removed.");
document.getElementById("confirm_delete_button").disabled = true;
}
- else if(configs.length > 0) {
- list_configs(configs);
- warning_text = "Are You Sure? The following Configurations will also be deleted.";
+ else {
+ warning_text = "Are You Sure?";
warning = document.createTextNode(warning_text);
}
function set_modal_text(title, text) {
var clear = function(node) {
while(node.lastChild) {
- node.removeChild(node.lastChild);
+ node.removeChild(node.lastChild);
}
}
var warning_title = document.getElementById("config_warning");
var formData = ajaxForm.serialize();
req = new XMLHttpRequest();
var url = "delete/" + current_resource_id;
+ req.onreadystatechange = function() {
+ if (this.readyState == 4 && this.status == 200) {
+ location.reload();
+ }
+ };
req.open("POST", url, true);
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
req.onerror = function() { alert("problem submitting form"); }