diff --git a/apps/main/forms.py b/apps/main/forms.py index 42446bc..5371bf8 100644 --- a/apps/main/forms.py +++ b/apps/main/forms.py @@ -63,7 +63,7 @@ class ExperimentForm(forms.ModelForm): class Meta: model = Experiment - exclude = [''] + exclude = ['status'] class LocationForm(forms.ModelForm): class Meta: diff --git a/apps/main/models.py b/apps/main/models.py index fe7d81e..29294b8 100644 --- a/apps/main/models.py +++ b/apps/main/models.py @@ -71,6 +71,10 @@ class Location(models.Model): def __unicode__(self): return u'%s' % self.name + def get_absolute_url(self): + return reverse('url_device', args=[str(self.id)]) + + class DeviceType(models.Model): name = models.CharField(max_length = 10, choices = DEV_TYPES, default = 'rc') @@ -99,10 +103,12 @@ class Device(models.Model): def __unicode__(self): return u'%s | %s' % (self.name, self.ip_address) - def get_status(self): - + def get_status(self): return self.status + def get_absolute_url(self): + return reverse('url_device', args=[str(self.id)]) + class Campaign(models.Model): @@ -121,6 +127,9 @@ class Campaign(models.Model): def __unicode__(self): return u'%s' % (self.name) + def get_absolute_url(self): + return reverse('url_campaign', args=[str(self.id)]) + class RunningExperiment(models.Model): radar = models.OneToOneField('Location', on_delete=models.CASCADE) @@ -145,6 +154,10 @@ class Experiment(models.Model): def __unicode__(self): return u'%s' % (self.name) + @property + def radar(self): + return self.location + def clone(self, **kwargs): confs = Configuration.objects.filter(experiment=self, type=0) @@ -201,6 +214,9 @@ class Experiment(models.Model): return color + def get_absolute_url(self): + return reverse('url_experiment', args=[str(self.id)]) + class Configuration(PolymorphicModel): diff --git a/apps/main/templates/base_edit.html b/apps/main/templates/base_edit.html new file mode 100644 index 0000000..ee4ed38 --- /dev/null +++ b/apps/main/templates/base_edit.html @@ -0,0 +1,35 @@ +{% extends "base.html" %} +{% load bootstrap3 %} +{% load static %} +{% load main_tags %} + +{% block content-title %}{{title}}{% endblock %} +{% block content-suptitle %}{{suptitle}}{% endblock %} + +{% block content %} + {% if form.is_multipart %} +
+ {% else %} + + {% endif %} + {% csrf_token %} + {% bootstrap_form form layout='horizontal' size='medium' %} +
+
+ {% if extra_button %} +
+ +
+ {% endif %} + {% if button %} +
+ + +
+ {% endif %} +
+{% endblock %} + +{% block sidebar%} + {% include "sidebar_devices.html" %} +{% endblock %} diff --git a/apps/main/templates/campaign_edit.html b/apps/main/templates/campaign_edit.html index 6252d7c..168de14 100644 --- a/apps/main/templates/campaign_edit.html +++ b/apps/main/templates/campaign_edit.html @@ -1,32 +1,12 @@ -{% extends "base.html" %} +{% extends "base_edit.html" %} {% load bootstrap3 %} {% load static %} {% load main_tags %} + {% block extra-head %} {% endblock %} -{% block camp-active %}active{% endblock %} - -{% block content-title %}{{title}}{% endblock %} -{% block content-suptitle %}{{suptitle}}{% endblock %} - -{% block content %} -
- {% csrf_token %} - {% bootstrap_form form layout='horizontal' size='medium' %} -
- {% if button %} -
- - {% endif %} -
-{% endblock %} - -{% block sidebar%} - {% include "sidebar_devices.html" %} -{% endblock %} - {% block extra-js%} diff --git a/apps/main/templates/confirm.html b/apps/main/templates/confirm.html index 504a110..d176cda 100644 --- a/apps/main/templates/confirm.html +++ b/apps/main/templates/confirm.html @@ -6,25 +6,21 @@ {% block content %}
{% csrf_token %} -{% if next %} - -{% endif %} -{% if delete_view %} - {% if object_name %} -

Are you sure you wish to delete {{ object_name }} from {{ object }}?

- {% else %} +{% if delete %}

Are you sure you wish to delete: {{ object }}?

- {% endif %} {% else %}

Are you sure you wish to proceed?

{% endif %} - {% if message %}

{{ message }}

{% endif %} + {% if message %}

{{ message }}

{% endif %}
+
+
+ {% endblock %} diff --git a/apps/main/templates/device_edit.html b/apps/main/templates/device_edit.html index 97dc756..16ebf08 100644 --- a/apps/main/templates/device_edit.html +++ b/apps/main/templates/device_edit.html @@ -1,29 +1 @@ -{% extends "base.html" %} -{% load bootstrap3 %} -{% load static %} -{% load main_tags %} -{% block extra-head %} - -{% endblock %} - -{% block dev-active %}active{% endblock %} - -{% block content-title %}{{title}}{% endblock %} -{% block content-suptitle %}{{suptitle}}{% endblock %} - -{% block content %} -
- {% csrf_token %} - {% bootstrap_form form layout='horizontal' size='medium' %} -
-
- -
-{% endblock %} - -{% block sidebar%} - {% include "sidebar_devices.html" %} -{% endblock %} - -{% block extra-js%} -{% endblock %} \ No newline at end of file +{% extends "base_edit.html" %} \ No newline at end of file diff --git a/apps/main/templates/experiment_edit.html b/apps/main/templates/experiment_edit.html index b9822c6..5e630cf 100644 --- a/apps/main/templates/experiment_edit.html +++ b/apps/main/templates/experiment_edit.html @@ -17,40 +17,6 @@ {% bootstrap_form form layout='horizontal' size='medium' %}

- {% if configurations %} -
-
- -
-
- - - - {% for key in configuration_keys %} - - {% endfor%} - - {% for item in configurations %} - - - {% for key in configuration_keys %} - - {% endfor %} - - {% endfor %} -
#{{ key|title }}
{{ forloop.counter }}{{ item|value:key }}
-
-
-
-
- {% endif %} - {% if button %}
diff --git a/apps/main/views.py b/apps/main/views.py index e6144a9..ae27307 100644 --- a/apps/main/views.py +++ b/apps/main/views.py @@ -41,11 +41,13 @@ CONF_MODELS = { 'usrp': USRPConfiguration, } + def index(request): kwargs = {} return render(request, 'index.html', kwargs) + def locations(request): locations = Location.objects.all().order_by('name') @@ -61,6 +63,7 @@ def locations(request): return render(request, 'locations.html', kwargs) + def location(request, id_loc): location = get_object_or_404(Location, pk=id_loc) @@ -95,6 +98,7 @@ def location_new(request): return render(request, 'location_edit.html', kwargs) + def location_edit(request, id_loc): location = get_object_or_404(Location, pk=id_loc) @@ -117,6 +121,7 @@ def location_edit(request, id_loc): return render(request, 'location_edit.html', kwargs) + def location_delete(request, id_loc): location = get_object_or_404(Location, pk=id_loc) @@ -127,12 +132,19 @@ def location_delete(request, id_loc): location.delete() return redirect('url_locations') - return HttpResponse("Not enough permission to delete this object") + messages.error(request, 'Not enough permission to delete this object') + return redirect(location.get_absolute_url()) - kwargs = {'object':location, 'loc_active':'active', - 'url_cancel':'url_location', 'id_item':id_loc} + kwargs = { + 'title': 'Delete', + 'suptitle': 'Location', + 'object': location, + 'previous': location.get_absolute_url(), + 'delete': True + } - return render(request, 'item_delete.html', kwargs) + return render(request, 'confirm.html', kwargs) + def devices(request): @@ -150,6 +162,7 @@ def devices(request): return render(request, 'devices.html', kwargs) + def device(request, id_dev): device = get_object_or_404(Device, pk=id_dev) @@ -163,6 +176,7 @@ def device(request, id_dev): return render(request, 'device.html', kwargs) + def device_new(request): if request.method == 'GET': @@ -183,6 +197,7 @@ def device_new(request): return render(request, 'device_edit.html', kwargs) + def device_edit(request, id_dev): device = get_object_or_404(Device, pk=id_dev) @@ -195,7 +210,7 @@ def device_edit(request, id_dev): if form.is_valid(): form.save() - return redirect('url_devices') + return redirect(device.get_absolute_url()) kwargs = {} kwargs['form'] = form @@ -205,6 +220,7 @@ def device_edit(request, id_dev): return render(request, 'device_edit.html', kwargs) + def device_delete(request, id_dev): device = get_object_or_404(Device, pk=id_dev) @@ -215,12 +231,19 @@ def device_delete(request, id_dev): device.delete() return redirect('url_devices') - return HttpResponse("Not enough permission to delete this object") + messages.error(request, 'Not enough permission to delete this object') + return redirect(device.get_absolute_url()) - kwargs = {'object':device, 'dev_active':'active', - 'url_cancel':'url_device', 'id_item':id_dev} + kwargs = { + 'title': 'Delete', + 'suptitle': 'Device', + 'object': device, + 'previous': device.get_absolute_url(), + 'delete': True + } - return render(request, 'item_delete.html', kwargs) + return render(request, 'confirm.html', kwargs) + def campaigns(request): @@ -237,6 +260,7 @@ def campaigns(request): return render(request, 'campaigns.html', kwargs) + def campaign(request, id_camp): campaign = get_object_or_404(Campaign, pk=id_camp) @@ -246,12 +270,10 @@ def campaign(request, id_camp): kwargs = {} kwargs['campaign'] = campaign - kwargs['campaign_keys'] = ['name', 'start_date', 'end_date', 'tags', 'description'] - - keys = ['id', 'name', 'start_time', 'end_time'] + kwargs['campaign_keys'] = ['template', 'name', 'start_date', 'end_date', 'tags', 'description'] - kwargs['experiment_keys'] = keys[1:] - kwargs['experiments'] = experiments.values(*keys) + kwargs['experiments'] = experiments + kwargs['experiment_keys'] = ['name', 'radar', 'start_time', 'end_time'] kwargs['title'] = 'Campaign' kwargs['suptitle'] = 'Details' @@ -261,6 +283,7 @@ def campaign(request, id_camp): return render(request, 'campaign.html', kwargs) + def campaign_new(request): kwargs = {} @@ -310,6 +333,7 @@ def campaign_new(request): return render(request, 'campaign_edit.html', kwargs) + def campaign_edit(request, id_camp): campaign = get_object_or_404(Campaign, pk=id_camp) @@ -332,6 +356,7 @@ def campaign_edit(request, id_camp): return render(request, 'campaign_edit.html', kwargs) + def campaign_delete(request, id_camp): campaign = get_object_or_404(Campaign, pk=id_camp) @@ -347,12 +372,19 @@ def campaign_delete(request, id_camp): return redirect('url_campaigns') - return HttpResponse("Not enough permission to delete this object") + messages.error(request, 'Not enough permission to delete this object') + return redirect(campaign.get_absolute_url()) - kwargs = {'object':campaign, 'camp_active':'active', - 'url_cancel':'url_campaign', 'id_item':id_camp} + kwargs = { + 'title': 'Delete', + 'suptitle': 'Campaign', + 'object': campaign, + 'previous': campaign.get_absolute_url(), + 'delete': True + } - return render(request, 'item_delete.html', kwargs) + return render(request, 'confirm.html', kwargs) + def experiments(request): @@ -371,6 +403,7 @@ def experiments(request): return render(request, 'experiments.html', kwargs) + def experiment(request, id_exp): experiment = get_object_or_404(Experiment, pk=id_exp) @@ -441,6 +474,7 @@ def experiment_new(request, id_camp=None): return render(request, 'experiment_edit.html', kwargs) + def experiment_edit(request, id_exp): experiment = get_object_or_404(Experiment, pk=id_exp) @@ -463,6 +497,7 @@ def experiment_edit(request, id_exp): return render(request, 'experiment_edit.html', kwargs) + def experiment_delete(request, id_exp): experiment = get_object_or_404(Experiment, pk=id_exp) @@ -479,6 +514,7 @@ def experiment_delete(request, id_exp): return render(request, 'item_delete.html', kwargs) + def dev_confs(request): configurations = Configuration.objects.all().order_by('type', 'device__device_type', 'experiment') @@ -498,6 +534,7 @@ def dev_confs(request): return render(request, 'dev_confs.html', kwargs) + def dev_conf(request, id_conf): conf = get_object_or_404(Configuration, pk=id_conf) @@ -544,7 +581,8 @@ def dev_conf_new(request, id_exp=0, id_dev=0): kwargs['button'] = 'Create' return render(request, 'dev_conf_edit.html', kwargs) - + + def dev_conf_edit(request, id_conf): conf = get_object_or_404(Configuration, pk=id_conf) @@ -575,6 +613,7 @@ def dev_conf_edit(request, id_conf): return render(request, '%s_conf_edit.html' %conf.device.device_type.name, kwargs) + def dev_conf_start(request, id_conf): conf = get_object_or_404(Configuration, pk=id_conf) @@ -592,6 +631,7 @@ def dev_conf_start(request, id_conf): return redirect(conf.get_absolute_url()) + def dev_conf_stop(request, id_conf): conf = get_object_or_404(Configuration, pk=id_conf) @@ -609,6 +649,7 @@ def dev_conf_stop(request, id_conf): return redirect(conf.get_absolute_url()) + def dev_conf_status(request, id_conf): conf = get_object_or_404(Configuration, pk=id_conf) @@ -649,6 +690,7 @@ def dev_conf_write(request, id_conf): return redirect(conf.get_absolute_url()) + def dev_conf_read(request, id_conf): conf = get_object_or_404(Configuration, pk=id_conf) @@ -690,6 +732,7 @@ def dev_conf_read(request, id_conf): return render(request, '%s_conf_edit.html' %conf.device.device_type.name, kwargs) + def dev_conf_import(request, id_conf): conf = get_object_or_404(Configuration, pk=id_conf) @@ -739,6 +782,7 @@ def dev_conf_import(request, id_conf): return render(request, 'dev_conf_import.html', kwargs) + def dev_conf_export(request, id_conf): conf = get_object_or_404(Configuration, pk=id_conf) @@ -773,6 +817,7 @@ def dev_conf_export(request, id_conf): return render(request, 'dev_conf_export.html', kwargs) + def dev_conf_delete(request, id_conf): conf = get_object_or_404(Configuration, pk=id_conf) @@ -865,6 +910,7 @@ def operation(request, id_camp=None): return render(request, 'operation.html', kwargs) + def operation_search(request, id_camp=None):