def deleteResource(request, resource_id): """ Deletes one row in the database. The FTP area is not affected. """ resource = models.Resources.objects.get(id=resource_id) # if request.method == "GET": form = forms.DeleteResourceForm() contextinstance = {'form' : form, 'resource' : resource, 'error_message' : None} contextinstance.update(csrf(request)) return render_to_response("delete_resource.html", contextinstance) elif request.method == "POST": # Reloads db-stored data. resources_utils.ResourcesUtils().clear() # error_message = None # initially. # form = forms.DeleteResourceForm(request.POST) if form.is_valid(): # user = request.POST['user'] if user not in settings.APPS_VALID_USERS_AND_PASSWORDS_FOR_TEST.keys(): error_message = u'Not a valid user. Please try again...' # if error_message == None: if ('delete_ftp' in request.POST) and (request.POST['delete_ftp'] == u'on'): logrow_id = admin_models.createLogRow(command = u'Delete resource (FTP)', status = u'RUNNING', user = user) try: resources_utils.ResourcesUtils().deleteFileFromFtp(resource.resource_file_name) admin_models.changeLogRowStatus(logrow_id, status = u'FINISHED') except: error_message = u"Can't delete resources from the database." admin_models.changeLogRowStatus(logrow_id, status = u'FAILED') admin_models.addResultLog(logrow_id, result_log = error_message) # if error_message == None: logrow_id = admin_models.createLogRow(command = u'Delete resource (DB)', status = u'RUNNING', user = user) try: resource = models.Resources.objects.get(id=resource_id) resource.delete() admin_models.changeLogRowStatus(logrow_id, status = u'FINISHED') except: error_message = u"Can't delete resource from the database." admin_models.changeLogRowStatus(logrow_id, status = u'FAILED') admin_models.addResultLog(logrow_id, result_log = error_message) # OK. if error_message == None: return HttpResponseRedirect("/resources") # contextinstance = {'form' : form, 'resource' : resource, 'error_message' : error_message} contextinstance.update(csrf(request)) return render_to_response("delete_resource.html", contextinstance) # Not a valid request method. return HttpResponseRedirect("/resources")
def deleteResources(request): """ Deletes all rows in the database. The FTP area is not affected. """ error_message = None # initially. # if request.method == "GET": # form = forms.DeleteAllResourcesForm() contextinstance = {'form' : form, 'error_message' : error_message} contextinstance.update(csrf(request)) return render_to_response("resources_delete_all.html", contextinstance) elif request.method == "POST": # Reloads db-stored data. resources_utils.ResourcesUtils().clear() # error_message = None # initially. # form = forms.DeleteAllResourcesForm(request.POST) if form.is_valid(): # user = request.POST['user'] password = request.POST['password'] if password != settings.APPS_VALID_USERS_AND_PASSWORDS_FOR_TEST.get(user, None): error_message = u'Not a valid user or password. Please try again...' # if error_message == None: if ('delete_ftp' in request.POST) and (request.POST['delete_ftp'] == u'on'): logrow_id = admin_models.createLogRow(command = u'Delete all resources (FTP)', status = u'RUNNING', user = user) try: resources_utils.ResourcesUtils().deleteAllFilesFromFtp() admin_models.changeLogRowStatus(logrow_id, status = u'FINISHED') except: error_message = u"Can't delete resources from the database." admin_models.changeLogRowStatus(logrow_id, status = u'FAILED') admin_models.addResultLog(logrow_id, result_log = error_message) # if error_message == None: logrow_id = admin_models.createLogRow(command = u'Delete all resources (DB)', status = u'RUNNING', user = user) try: resources_models.Resources.objects.all().delete() admin_models.changeLogRowStatus(logrow_id, status = u'FINISHED') except: error_message = u"Can't delete resources from the database." admin_models.changeLogRowStatus(logrow_id, status = u'FAILED') admin_models.addResultLog(logrow_id, result_log = error_message) # OK. if error_message == None: return HttpResponseRedirect("/sharkdataadmin") # contextinstance = {'form' : form, 'error_message' : error_message} contextinstance.update(csrf(request)) return render_to_response("resources_delete_all.html", contextinstance) # Not a valid request method. return HttpResponseRedirect("/sharkdataadmin")
def deleteDataset(request, dataset_id): """ Deletes one row in the database. """ dataset = models.Datasets.objects.get(id=dataset_id) # if request.method == "GET": form = forms.DeleteDatasetForm() contextinstance = {'form' : form, 'dataset' : dataset, 'error_message' : None} contextinstance.update(csrf(request)) return render_to_response("delete_dataset.html", contextinstance) elif request.method == "POST": error_message = None # initially. # form = forms.DeleteDatasetForm(request.POST) if form.is_valid(): # user = request.POST['user'] password = request.POST['password'] if password != settings.APPS_VALID_USERS_AND_PASSWORDS_FOR_TEST.get(user, None): error_message = 'Not a valid user or password. Please try again...' # if error_message == None: if ('delete_ftp' in request.POST) and (request.POST['delete_ftp'] == 'on'): # Delete the marked dataset version. Earlier versions vill be used, if there are any. logrow_id = admin_models.createLogRow(command = 'Delete dataset (FTP)', status = 'RUNNING', user = user) try: error_message = sharkdata_core.DatasetUtils().deleteFileFromFtp(dataset.dataset_file_name) error_message = sharkdata_core.DatasetUtils().writeLatestDatasetsInfoToDb(user) admin_models.changeLogRowStatus(logrow_id, status = 'FINISHED') except: error_message = u"Can't delete dataset from the ftp." admin_models.changeLogRowStatus(logrow_id, status = 'FAILED') admin_models.addResultLog(logrow_id, result_log = error_message) else: logrow_id = admin_models.createLogRow(command = 'Delete dataset (DB)', status = 'RUNNING', user = user) try: dataset = models.Datasets.objects.get(id=dataset_id) dataset.delete() except: error_message = u"Can't delete dataset from the database." admin_models.changeLogRowStatus(logrow_id, status = 'FAILED') admin_models.addResultLog(logrow_id, result_log = error_message) # OK. if error_message == None: return HttpResponseRedirect("/datasets") # contextinstance = {'form' : form, 'dataset' : dataset, 'error_message' : error_message} contextinstance.update(csrf(request)) return render_to_response("delete_dataset.html", contextinstance) # Not a valid request method. return HttpResponseRedirect("/datasets")
def loadAllDatasets(request): """ Updates the database from datasets stored in the FTP area. I multiple versions of a dataset are in the FTP area only the latest will be loaded. """ error_message = None # initially. # if request.method == "GET": form = forms.LoadAllDatasetsForm() contextinstance = {'form' : form, 'error_message' : error_message} contextinstance.update(csrf(request)) return render_to_response("datasets_load_all.html", contextinstance) elif request.method == "POST": error_message = None # initially. # form = forms.LoadAllDatasetsForm(request.POST) if form.is_valid(): # user = request.POST['user'] password = request.POST['password'] if password != settings.APPS_VALID_USERS_AND_PASSWORDS_FOR_TEST.get(user, None): error_message = u'Not a valid user or password. Please try again...' # # # if error_message == None: logrow_id = admin_models.createLogRow(command = u'Load all datasets from FTP to DB', status = u'RUNNING', user = user) try: error_counter = dataset_utils.DatasetUtils().writeLatestDatasetsInfoToDb(logrow_id, user) if error_counter > 0: admin_models.changeLogRowStatus(logrow_id, status = u'FINISHED (Errors: ' + unicode(error_counter) + u')') else: admin_models.changeLogRowStatus(logrow_id, status = u'FINISHED') except Exception as e: error_message = u"Can't load datasets and save to the database." admin_models.changeLogRowStatus(logrow_id, status = u'FAILED') admin_models.addResultLog(logrow_id, result_log = error_message) if settings.DEBUG: print(u'\nError: ' + error_message + u'\nException: ' + unicode(e) + u'\n') settings.LOGGER.error(u'\nError: ' + error_message + u'\nException: ' + unicode(e) + u'\n') # # if error_message == None: # if ('update_metadata' in request.POST) and (request.POST['update_metadata'] == u'on'): # dataset_utils.DatasetUtils().updateMetadataForAllDatasetsInThread(user) # # if error_message == None: # if ('generate_archives' in request.POST) and (request.POST['generate_archives'] == u'on'): # dataset_utils.DatasetUtils().generateArchivesForAllDatasetsInThread(user) # OK. if error_message == None: return HttpResponseRedirect("/sharkdataadmin") # contextinstance = {'form' : form, 'error_message' : error_message} contextinstance.update(csrf(request)) return render_to_response("datasets_load_all.html", contextinstance) # Not a valid request method. return HttpResponseRedirect("/sharkdataadmin")
def deleteExportFiles(request): """ Deletes rows in the database. """ error_message = None # if request.method == "GET": # form = forms.DeleteExportFilesForm() contextinstance = {'form' : form, 'error_message' : error_message} contextinstance.update(csrf(request)) return render_to_response("exportfiles_delete_all.html", contextinstance) elif request.method == "POST": # form = forms.DeleteExportFilesForm(request.POST) if form.is_valid(): # user = request.POST['user'] password = request.POST['password'] if password != settings.APPS_VALID_USERS_AND_PASSWORDS_FOR_TEST.get(user, None): error_message = 'Not a valid user or password. Please try again...' # # if error_message == None: # if ('delete_ftp' in request.POST) and (request.POST['delete_ftp'] == 'on'): # logrow_id = admin_models.createLogRow(command = 'Delete all datasets from FTP', status = 'RUNNING', user = user) # try: # error_message = dataset_utils.DatasetUtils().deleteAllFilesFromFtp() # admin_models.changeLogRowStatus(logrow_id, status = 'FINISHED') # except: # error_message = u"Can't delete datasets from the FTP area." # admin_models.changeLogRowStatus(logrow_id, status = 'FAILED') # admin_models.addResultLog(logrow_id, result_log = error_message) # if error_message == None: logrow_id = admin_models.createLogRow(command = 'Delete all ICES-XML files from DB', status = 'RUNNING', user = user) try: exportformats_models.ExportFiles.objects.all().delete() admin_models.changeLogRowStatus(logrow_id, status = 'FINISHED') except: error_message = u"Can't delete datasets from the database." admin_models.changeLogRowStatus(logrow_id, status = 'FAILED') admin_models.addResultLog(logrow_id, result_log = error_message) # OK. if error_message == None: return HttpResponseRedirect("/sharkdataadmin") # contextinstance = {'form' : form, 'error_message' : error_message} contextinstance.update(csrf(request)) return render_to_response("exportfiles_delete_all.html", contextinstance) # Not a valid request method. return HttpResponseRedirect("/sharkdataadmin")
def loadAllResources(request): """ Updates the database from resources stored in the FTP area. """ error_message = None # initially. # if request.method == "GET": form = forms.LoadAllResourcesForm() contextinstance = {'form': form, 'error_message': error_message} contextinstance.update(csrf(request)) return render_to_response("resources_load_all.html", contextinstance) elif request.method == "POST": # Reloads db-stored data. resources_utils.ResourcesUtils().clear() # error_message = None # initially. # form = forms.LoadAllResourcesForm(request.POST) if form.is_valid(): # user = request.POST['user'] password = request.POST['password'] if password != settings.APPS_VALID_USERS_AND_PASSWORDS_FOR_TEST.get(user, None): error_message = u'Not a valid user or password. Please try again...' # if error_message == None: logrow_id = admin_models.createLogRow(command = u'Load all resources from FTP to DB', status = u'RUNNING', user = user) try: resources_utils.ResourcesUtils().writeResourcesInfoToDb(user) admin_models.changeLogRowStatus(logrow_id, status = u'FINISHED') except: error_message = u"Can't load resources and save to the database." admin_models.changeLogRowStatus(logrow_id, status = u'FAILED') admin_models.addResultLog(logrow_id, result_log = error_message) # OK. if error_message == None: return HttpResponseRedirect("/sharkdataadmin") # contextinstance = {'form': form, 'error_message': error_message} contextinstance.update(csrf(request)) return render_to_response("resources_load_all.html", contextinstance) # Not a valid request method. return HttpResponseRedirect("/sharkdataadmin")
def deleteExportFile(request, export_name): """ Deletes one row in the database. """ exportfile = models.ExportFiles.objects.get(export_name = export_name) # if request.method == "GET": form = forms.DeleteExportFileForm() contextinstance = {'form' : form, 'exportfile' : exportfile, 'error_message' : None} contextinstance.update(csrf(request)) return render_to_response("delete_exportfile.html", contextinstance) elif request.method == "POST": error_message = None # initially. # form = forms.DeleteExportFileForm(request.POST) if form.is_valid(): # user = request.POST['user'] password = request.POST['password'] if password != settings.APPS_VALID_USERS_AND_PASSWORDS_FOR_TEST.get(user, None): error_message = 'Not a valid user or password. Please try again...' # if error_message == None: logrow_id = admin_models.createLogRow(command = 'Delete exportfile (DB)', status = 'RUNNING', user = user) try: exportfile = models.ExportFiles.objects.get(export_name = export_name) exportfile.delete() admin_models.changeLogRowStatus(logrow_id, status = 'FINISHED') except: error_message = u"Can't delete exportfile from the database." admin_models.changeLogRowStatus(logrow_id, status = 'FAILED') admin_models.addResultLog(logrow_id, result_log = error_message) # OK. if error_message == None: return HttpResponseRedirect("/exportformats") # contextinstance = {'form' : form, 'exportfile' : exportfile, 'error_message' : error_message} contextinstance.update(csrf(request)) return render_to_response("delete_exportfile.html", contextinstance) # Not a valid request method. return HttpResponseRedirect("/exportformats")
def cleanUpSpeciesObs(request): """ Removes species observations with status='DELETED'. """ error_message = None # initially. # if request.method == "GET": # form = forms.CleanUpSpeciesObsForm() contextinstance = {'form': form, 'error_message': error_message} contextinstance.update(csrf(request)) return render_to_response("speciesobs_cleanup.html", contextinstance) elif request.method == "POST": form = forms.CleanUpSpeciesObsForm(request.POST) if form.is_valid(): # user = request.POST['user'] password = request.POST['password'] if password != settings.APPS_VALID_USERS_AND_PASSWORDS_FOR_TEST.get(user, None): error_message = u'Not a valid user or password. Please try again...' # if error_message == None: logrow_id = admin_models.createLogRow(command = u'Clean up species observations', status = u'RUNNING', user = user) try: error_message = speciesobs_utils.SpeciesObsUtils().cleanUpSpeciesObsInThread(logrow_id) # admin_models.changeLogRowStatus(logrow_id, status = u'FINISHED') except: error_message = u"Can't clean up species observations." admin_models.changeLogRowStatus(logrow_id, status = u'FAILED') admin_models.addResultLog(logrow_id, result_log = error_message) # OK. if error_message == None: return HttpResponseRedirect("/sharkdataadmin") # contextinstance = {'form': form, 'error_message': error_message} contextinstance.update(csrf(request)) return render_to_response("speciesobs_cleanup.html", contextinstance) # Not a valid request method. return HttpResponseRedirect("/sharkdataadmin")
def generateArchivesForAllDatasetsInThread(self, user): """ """ logrow_id = admin_models.createLogRow(command = u'Generate archives (DwC, etc.)', status = u'RUNNING', user = user) try: # Check if generate_archives thread is running. if self._generate_archives_thread: if self._generate_archives_thread.is_alive(): error_message = u"Generate archives is already running. Please try again later." admin_models.changeLogRowStatus(logrow_id, status = u'FAILED') admin_models.addResultLog(logrow_id, result_log = error_message) # return # Use a thread to relese the user. This will take some time. self._generate_archives_thread = threading.Thread(target = self.generateArchivesForAllDatasets, args=(logrow_id, user, )) self._generate_archives_thread.start() except: error_message = u"Can't generate_archives." admin_models.changeLogRowStatus(logrow_id, status = u'FAILED') admin_models.addResultLog(logrow_id, result_log = error_message) # return None # No error message.
def validateIcesXmlInThread(self, datatype_list, user): """ """ logrow_id = admin_models.createLogRow(command = 'Validate ICES-XML file.', status = 'RUNNING', user = user) try: # Check if thread is running. if self._validate_ices_xml_thread: if self._validate_ices_xml_thread.is_alive(): error_message = u"Validate ICES-XML file is already running. Please try again later." admin_models.changeLogRowStatus(logrow_id, status = 'FAILED') admin_models.addResultLog(logrow_id, result_log = error_message) # return # Use a thread to relese the user. self._validate_ices_xml_thread = threading.Thread(target = sharkdata_core.ValidateIcesXml().validateIcesXml, args=(logrow_id, datatype_list, user )) self._validate_ices_xml_thread.start() except Exception as e: error_message = u"Can't validate ICES-XML file." + '\nException: ' + unicode(e) + '\n' admin_models.changeLogRowStatus(logrow_id, status = 'FAILED') admin_models.addResultLog(logrow_id, result_log = error_message) # return None # No error message.
def generateIcesXmlInThread(self, datatype_list, year_from, year_to, status, user): """ """ logrow_id = admin_models.createLogRow(command="Generate ICES-XML file.", status="RUNNING", user=user) try: # Check if thread is running. if self._generate_ices_xml_thread: if self._generate_ices_xml_thread.is_alive(): error_message = "Generate ICES-XML file is already running. Please try again later." admin_models.changeLogRowStatus(logrow_id, status="FAILED") admin_models.addResultLog(logrow_id, result_log=error_message) # return # Use a thread to relese the user. self._generate_ices_xml_thread = threading.Thread( target=sharkdata_core.GenerateIcesXml().generateIcesXml, args=(logrow_id, datatype_list, year_from, year_to, status, user), ) self._generate_ices_xml_thread.start() except Exception as e: error_message = "Can't generate ICES-XML file." + "\nException: " + unicode(e) + "\n" admin_models.changeLogRowStatus(logrow_id, status="FAILED") admin_models.addResultLog(logrow_id, result_log=error_message) # return None # No error message.