Skip to content

Commit

Permalink
Add delete data dialog
Browse files Browse the repository at this point in the history
  • Loading branch information
marioba committed Dec 17, 2021
1 parent 0f2bea2 commit 2240016
Show file tree
Hide file tree
Showing 4 changed files with 212 additions and 2 deletions.
48 changes: 46 additions & 2 deletions comptages/comptages.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import os
from datetime import datetime
import pytz
from datetime import datetime, timedelta
from functools import partial

from qgis.PyQt.QtGui import QIcon
from qgis.PyQt.QtWidgets import QAction, QFileDialog
from qgis.PyQt.QtWidgets import QAction, QFileDialog, QMessageBox
from qgis.PyQt.QtCore import QObject, Qt, QDateTime
from qgis.core import (
QgsMessageLog, Qgis, QgsApplication, QgsExpressionContextUtils,
Expand All @@ -14,6 +15,7 @@
from comptages.core.layers import Layers
from comptages.core.filter_dialog import FilterDialog
from comptages.core.yearly_report_dialog import YearlyReportDialog
from comptages.core.delete_dialog import DeleteDialog
from comptages.core.utils import push_info
from comptages.datamodel import models
from comptages.core import importer, importer_task, report, report_task
Expand All @@ -23,6 +25,7 @@
from comptages.report.yearly_report_bike import YearlyReportBike
from comptages.ics.ics_importer import IcsImporter
from comptages.ui.resources import *
from comptages.core import definitions


class Comptages(QObject):
Expand Down Expand Up @@ -539,6 +542,47 @@ def do_generate_chart_action(self, count_id):
'{} - Generate chart action ended'.format(datetime.now()),
'Comptages', Qgis.Info)


def do_delete_data_action(self, count_id):
dlg = DeleteDialog(self.iface)
tz = pytz.timezone("Europe/Zurich")

if dlg.exec_():
start = tz.localize(dlg.start_date.dateTime().toPyDateTime())
end = tz.localize(dlg.end_date.dateTime().toPyDateTime())
definitive = dlg.definitive.isChecked()
quarantine = dlg.quarantine.isChecked()
count = models.Count.objects.get(id=count_id)

msg = QMessageBox()
msg.setIcon(QMessageBox.Warning)
msg.setText("Effacement des données")
# msg.setInformativeText(f"Effacement des données")
msg.setDetailedText(
"Les données suivantes seront supprimées:\n"
f"comptage: {count_id}\n"
f"de: {start.strftime('%d.%m.%Y')}\n"
f"à: {end.strftime('%d.%m.%Y')} inclus\n"
f"provisoires: {quarantine}\n"
f"définitives: {definitive}"
)
msg.setWindowTitle("Effacement des données")
msg.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel)
retval = msg.exec_()
if retval == QMessageBox.Ok:
qs = models.CountDetail.objects.filter(
id_count=count,
timestamp__range=(start, end + timedelta(days=1)),
)

if not definitive:
qs = qs.filter(status=definitions.IMPORT_STATUS_QUARANTINE)

if not quarantine:
qs = qs.filter(status=definitions.IMPORT_STATUS_DEFINITIVE)

qs.delete()

def enable_actions_if_needed(self):
"""Enable actions if the plugin is connected to the db
otherwise disable them"""
Expand Down
10 changes: 10 additions & 0 deletions comptages/core/delete_dialog.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
from qgis.PyQt.QtWidgets import QDialog
from comptages.core.utils import get_ui_class

FORM_CLASS = get_ui_class('delete.ui')


class DeleteDialog(QDialog, FORM_CLASS):
def __init__(self, iface, parent=None):
QDialog.__init__(self, parent)
self.setupUi(self)
9 changes: 9 additions & 0 deletions comptages/core/layers.py
Original file line number Diff line number Diff line change
Expand Up @@ -298,6 +298,15 @@ def add_layer_actions(self):
action.setActionScopes(['Feature'])
action_manager.addAction(action)

action = QgsAction(
QgsAction.GenericPython,
'Effacer des données',
("from qgis.utils import plugins\n"
"plugins['comptages'].do_delete_data_action([% attribute( $currentfeature, 'id' ) %])")
)
action.setActionScopes(['Feature'])
action_manager.addAction(action)

def create_count(self):

layer = self.layers['section']
Expand Down
147 changes: 147 additions & 0 deletions comptages/ui/delete.ui
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Delete</class>
<widget class="QDialog" name="Delete">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>865</width>
<height>181</height>
</rect>
</property>
<property name="windowTitle">
<string>Delete</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QFormLayout" name="formLayout">
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Date début</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QgsDateTimeEdit" name="start_date">
<property name="locale">
<locale language="French" country="France"/>
</property>
<property name="displayFormat">
<string>dd.MM.yyyy </string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Date fin</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QgsDateTimeEdit" name="end_date">
<property name="displayFormat">
<string>dd.MM.yyyy </string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Données provisoires</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QCheckBox" name="quarantine">
<property name="text">
<string/>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Données définitives</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QCheckBox" name="definitive">
<property name="text">
<string/>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<widget class="QDialogButtonBox" name="buttons">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>QgsDateTimeEdit</class>
<extends>QDateTimeEdit</extends>
<header>qgsdatetimeedit.h</header>
</customwidget>
</customwidgets>
<resources/>
<connections>
<connection>
<sender>buttons</sender>
<signal>accepted()</signal>
<receiver>Delete</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttons</sender>
<signal>rejected()</signal>
<receiver>Delete</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

0 comments on commit 2240016

Please sign in to comment.