Пример #1
0
class SpotExtendedInfoAdmin(admin.ModelAdmin):
    """ The admin model for SpotExtendedInfo.
    """
    form = SpotExtendedInfoForm.implementation()

    list_display = ("spot", "key", "value")
    list_editable = ["key", "value"]
    list_filter = ["key", "spot"]
Пример #2
0
def _save_extended_info(sender, **kwargs):
    """Sync the extended info for the spot"""
    spot = kwargs['spot']
    partial_update = kwargs['partial_update']
    stash = kwargs['stash']

    new_extended_info = stash['new_extended_info']
    old_extended_info = stash['old_extended_info']

    if new_extended_info is None:
        if not partial_update:
            SpotExtendedInfo.objects.filter(spot=spot).delete()
    else:
        # first, loop over the new extended info and either:
        # - add items that are new
        # - update items that are old
        for key in new_extended_info:
            value = new_extended_info[key]

            ei = None
            if key in old_extended_info:
                if value == old_extended_info[key]:
                    continue
                else:
                    ei = SpotExtendedInfo.objects.get(spot=spot, key=key)

            eiform = SpotExtendedInfoForm(
                {
                    'spot': spot.pk,
                    'key': key,
                    'value': value
                }, instance=ei)
            if not eiform.is_valid():
                raise RESTFormInvalidError(eiform)

            ei = eiform.save()
        # Now loop over the different in the keys and remove old
        # items that aren't present in the new set
        for key in (set(old_extended_info.keys()) -
                    set(new_extended_info.keys())):
            try:
                ei = SpotExtendedInfo.objects.get(spot=spot, key=key)
                ei.delete()
            except SpotExtendedInfo.DoesNotExist:
                # removing something that does not exist isn't an error
                pass
Пример #3
0
def _save_extended_info(sender, **kwargs):
    """Sync the extended info for the spot"""
    spot = kwargs['spot']
    partial_update = kwargs['partial_update']
    stash = kwargs['stash']

    new_extended_info = stash['new_extended_info']
    old_extended_info = stash['old_extended_info']

    if new_extended_info is None:
        if not partial_update:
            SpotExtendedInfo.objects.filter(spot=spot).delete()
    else:
        # first, loop over the new extended info and either:
        # - add items that are new
        # - update items that are old
        for key in new_extended_info:
            value = new_extended_info[key]

            ei = None
            if key in old_extended_info:
                if value == old_extended_info[key]:
                    continue
                else:
                    ei = SpotExtendedInfo.objects.get(spot=spot, key=key)

            eiform = SpotExtendedInfoForm({'spot': spot.pk,
                                           'key': key,
                                           'value': value},
                                          instance=ei)
            if not eiform.is_valid():
                raise RESTFormInvalidError(eiform)

            ei = eiform.save()
        # Now loop over the different in the keys and remove old
        # items that aren't present in the new set
        for key in (set(old_extended_info.keys()) -
                    set(new_extended_info.keys())):
            try:
                ei = SpotExtendedInfo.objects.get(spot=spot, key=key)
                ei.delete()
            except SpotExtendedInfo.DoesNotExist:
                # removing something that does not exist isn't an error
                pass
Пример #4
0
from django.dispatch import receiver

from geoposition import Geoposition
from geoposition.forms import GeopositionField
import logging
from spotseeker_server.admin import SpotAdmin
from spotseeker_server.forms.spot import SpotForm as SSSpotForm, SpotExtendedInfoForm as SSSpotExtendedInfoForm
from spotseeker_server.models import SpotAvailableHours, SpotImage, SpaceReview
import re

from .models import UIUCSpot, UIUCSpaceReview, HostAuthRule

logger = logging.getLogger(__name__)

SpotForm = SSSpotForm.implementation()
SpotExtendedInfoForm = SSSpotExtendedInfoForm.implementation()

SPOT_BOOLEAN_FIELDS = (
    'has_whiteboards',
    'has_outlets',
    'has_printing',
    'has_scanner',
    'has_displays',
    'has_projector',
    'has_computers',
    'has_natural_light',
    'reservable',
    )

SPOT_INTEGER_FIELDS = (
    'num_computers',