add create and delete views for backups
This commit is contained in:
parent
273d4da42b
commit
72b8c86a98
|
@ -23,9 +23,10 @@ class Backup(models.Model):
|
|||
software = models.ForeignKey(Software, models.SET_NULL, blank=True,
|
||||
null=True)
|
||||
source_path = models.CharField(max_length=200, blank=True)
|
||||
exec_time = models.TimeField()
|
||||
exec_days = models.ManyToManyField(Weekday)
|
||||
target_device = models.ManyToManyField(Computer, through='TargetDevice')
|
||||
exec_time = models.TimeField(null=True, blank=True)
|
||||
exec_days = models.ManyToManyField(Weekday, blank=True)
|
||||
target_device = models.ManyToManyField(Computer, through='TargetDevice',
|
||||
blank=True)
|
||||
|
||||
def __str__(self):
|
||||
return str(self.name)
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
{% extends "core/base.html" %}
|
||||
{% block section_title %}Delete Backup{% endblock %}
|
||||
{% block content %}
|
||||
<div class="row">
|
||||
<form method="post">{% csrf_token %}
|
||||
<p>Are you sure you want delete the backup "{{ object }}" for "{{ object.computer }}"?</p>
|
||||
<button type="submit" class="btn btn-danger">Delete</button>
|
||||
<a href="{{ request.META.HTTP_REFERER }}" class="btn btn-primary">Cancel</a>
|
||||
<input type="hidden" id="previous_page" name="previous_page" value="/previous/page/url">
|
||||
</form>
|
||||
<script>
|
||||
prev = document.getElementById("previous_page");
|
||||
prev.value = document.referrer;
|
||||
</script>
|
||||
</div>
|
||||
{% endblock %}
|
|
@ -0,0 +1,14 @@
|
|||
{% extends "core/base.html" %}
|
||||
{% load crispy_forms_tags %}
|
||||
|
||||
{% block section_title %}Add Backup{% endblock %}
|
||||
{% block content %}
|
||||
<div class="row">
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
{{ form|crispy }}
|
||||
<input type="submit" value="Save" class="btn btn-primary">
|
||||
<a href="{% url 'computer' view.kwargs.pk %}" class="btn btn-secondary">Cancel</a>
|
||||
</form>
|
||||
</div>
|
||||
{% endblock %}
|
|
@ -0,0 +1,37 @@
|
|||
from django.test import Client
|
||||
from mixer.backend.django import mixer
|
||||
import pytest
|
||||
|
||||
|
||||
pytestmark = pytest.mark.django_db
|
||||
|
||||
|
||||
def test_backup_with_computer_create_view(create_admin_user):
|
||||
create_admin_user()
|
||||
client = Client()
|
||||
client.login(username="pharma-admin", password="password")
|
||||
computer = mixer.blend('computers.Computer', customer=mixer.SELECT)
|
||||
target_device = mixer.blend('computers.Computer', customer=mixer.SELECT)
|
||||
data = {
|
||||
'name': "foo",
|
||||
'computer': computer.id,
|
||||
'amount': 1,
|
||||
'exec_time': '12:00',
|
||||
'method': 1,
|
||||
'exec_days': 3,
|
||||
'target_device': target_device.id
|
||||
}
|
||||
url = '/create/backup-for-computer/{}/'.format(computer.id)
|
||||
response = client.post(url, data)
|
||||
assert response.status_code == 302
|
||||
|
||||
|
||||
def test_backup_with_computer_delete_view(create_admin_user):
|
||||
create_admin_user()
|
||||
client = Client()
|
||||
client.login(username="pharma-admin", password="password")
|
||||
computer = mixer.blend('computers.Computer', customer=mixer.SELECT)
|
||||
backup = mixer.blend('backups.Backup', computer=computer)
|
||||
url = '/delete/backup/{}/'.format(backup.id)
|
||||
response = client.post(url)
|
||||
assert response.status_code == 302
|
|
@ -6,4 +6,8 @@ urlpatterns = [
|
|||
path('customer/<int:pk>/backups/', views.backups_table_view,
|
||||
name='backups'),
|
||||
path('backup/<int:pk>/', views.backup_detail_view, name='backup'),
|
||||
path('create/backup-for-computer/<int:pk>/',
|
||||
views.BackupCreateView.as_view(), name='backup_create'),
|
||||
path('delete/backup/<int:pk>/',
|
||||
views.BackupDeleteView.as_view(), name='backup_delete'),
|
||||
]
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
from django.contrib.auth.decorators import login_required
|
||||
from django.shortcuts import render
|
||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||
from django.shortcuts import get_object_or_404
|
||||
from django.shortcuts import render
|
||||
from django.urls import reverse
|
||||
from django.views.generic import CreateView
|
||||
from django.views.generic import DeleteView
|
||||
|
||||
from django_tables2 import RequestConfig
|
||||
|
||||
|
@ -33,3 +37,32 @@ def backup_detail_view(request, pk):
|
|||
{'backup': backup,
|
||||
'target_device_list': target_device_list,
|
||||
'notifications': notifications})
|
||||
|
||||
|
||||
class BackupCreateView(LoginRequiredMixin, CreateView):
|
||||
model = Backup
|
||||
template_name = 'backups/backup_create.html'
|
||||
fields = '__all__'
|
||||
|
||||
def get_success_url(self):
|
||||
return reverse('computer', args=(self.computer.pk,))
|
||||
|
||||
def get_initial(self):
|
||||
"""
|
||||
Set the device and customer dropdown to the device from the previous
|
||||
view and the customer related to the device.
|
||||
"""
|
||||
self.computer = get_object_or_404(Computer, id=self.kwargs.get('pk'))
|
||||
return {
|
||||
'computer': self.computer,
|
||||
}
|
||||
|
||||
|
||||
class BackupDeleteView(LoginRequiredMixin, DeleteView):
|
||||
model = Backup
|
||||
template_name = 'backups/backup_confirm_delete.html'
|
||||
|
||||
def get_success_url(self):
|
||||
return reverse('computer', args=(self.object.computer.pk,))
|
||||
|
||||
|
||||
|
|
|
@ -64,10 +64,10 @@
|
|||
<h2>Backup</h2>
|
||||
<ul>
|
||||
{% for backup in backup_relations %}
|
||||
<li><a href="{% url 'backup' backup.id %}">{{ backup }}</a></li>
|
||||
<li><a href="{% url 'backup' backup.id %}">{{ backup }}</a> <a href="{% url 'backup_delete' backup.pk %}" class="delete" title="Delete" data-toggle="tooltip"><i class="material-icons">clear</i></a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<p><a href="{% url 'warranty_create' pk %}" class="add" title="Add" data-toggle="tooltip"><i class="material-icons">add</i></a></p>
|
||||
<p><a href="{% url 'backup_create' pk %}" class="add" title="Add" data-toggle="tooltip"><i class="material-icons">add</i></a></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
|
Loading…
Reference in New Issue