Statistics
| Branch: | Tag: | Revision:

root / snf-cyclades-app / synnefo / db / managers.py @ 2c21381e

History | View | Annotate | Download (2 kB)

1 dbecf586 Christos Stavrakakis
# Copyright 2012, 2013 GRNET S.A. All rights reserved.
2 864bed43 Christos Stavrakakis
#
3 864bed43 Christos Stavrakakis
# Redistribution and use in source and binary forms, with or without
4 864bed43 Christos Stavrakakis
# modification, are permitted provided that the following conditions
5 864bed43 Christos Stavrakakis
# are met:
6 864bed43 Christos Stavrakakis
#
7 864bed43 Christos Stavrakakis
#   1. Redistributions of source code must retain the above copyright
8 864bed43 Christos Stavrakakis
#      notice, this list of conditions and the following disclaimer.
9 864bed43 Christos Stavrakakis
#
10 864bed43 Christos Stavrakakis
#  2. Redistributions in binary form must reproduce the above copyright
11 864bed43 Christos Stavrakakis
#     notice, this list of conditions and the following disclaimer in the
12 864bed43 Christos Stavrakakis
#     documentation and/or other materials provided with the distribution.
13 864bed43 Christos Stavrakakis
#
14 864bed43 Christos Stavrakakis
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
15 864bed43 Christos Stavrakakis
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 864bed43 Christos Stavrakakis
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17 864bed43 Christos Stavrakakis
# ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
18 864bed43 Christos Stavrakakis
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 864bed43 Christos Stavrakakis
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 864bed43 Christos Stavrakakis
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 864bed43 Christos Stavrakakis
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 864bed43 Christos Stavrakakis
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 864bed43 Christos Stavrakakis
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 864bed43 Christos Stavrakakis
# SUCH DAMAGE.
25 864bed43 Christos Stavrakakis
#
26 864bed43 Christos Stavrakakis
# The views and conclusions contained in the software and documentation are
27 864bed43 Christos Stavrakakis
# those of the authors and should not be interpreted as representing official
28 864bed43 Christos Stavrakakis
# policies, either expressed or implied, of GRNET S.A.
29 864bed43 Christos Stavrakakis
30 864bed43 Christos Stavrakakis
from django.db.models import Manager
31 864bed43 Christos Stavrakakis
from django.db.models.query import QuerySet
32 864bed43 Christos Stavrakakis
33 864bed43 Christos Stavrakakis
34 2c21381e Christos Stavrakakis
class ProtectedDeleteManager(Manager):
35 dbecf586 Christos Stavrakakis
    """Manager for protecting Backend deletion.
36 864bed43 Christos Stavrakakis

37 dbecf586 Christos Stavrakakis
    Call Backend delete() method in order to prevent deletion
38 dbecf586 Christos Stavrakakis
    of Backends that host non-deleted VirtualMachines.
39 864bed43 Christos Stavrakakis

40 864bed43 Christos Stavrakakis
    """
41 864bed43 Christos Stavrakakis
42 864bed43 Christos Stavrakakis
    def get_query_set(self):
43 864bed43 Christos Stavrakakis
        return BackendQuerySet(self.model, using=self._db)
44 864bed43 Christos Stavrakakis
45 864bed43 Christos Stavrakakis
46 864bed43 Christos Stavrakakis
class BackendQuerySet(QuerySet):
47 864bed43 Christos Stavrakakis
    def delete(self):
48 864bed43 Christos Stavrakakis
        for backend in self._clone():
49 864bed43 Christos Stavrakakis
            backend.delete()