Пример #1
0
def write(request):
    if request.method == "POST" :
        ret = "OK"
        
        user = User()
        user.userId = int(request.POST["userId"])
        
        place = Place()
        place.placeId = int(request.POST["placeId"])
        
        if Review.objects.filter(reviewUser=user, reviewPlace=place).exists():
            ret = "EXIST"
        else:
            review = Review()
            review.reviewUser = user
            review.reviewPlace = place
            review.reviewPointPrice = int(request.POST["reviewPointPrice"])
            review.reviewPointService = int(request.POST["reviewPointService"])
            review.reviewPointLocation = int(request.POST["reviewPointLocation"])
            review.reviewPointCondition = int(request.POST["reviewPointCondition"])
            review.reviewPointComfort = int(request.POST["reviewPointComfort"])
            review.reviewText = request.POST["reviewText"]
            review.save()

        return HttpResponse(ret)
    else :
        return HttpResponse("what?")
Пример #2
0
class RoutesTest(TestCase):
    def setUp(self):
        self.route = Route(name="Route 101")
        self.place1 = Place(name="Villa Venezuela")
        self.place2 = Place(name="Villa Libertad")

        self.route.save()
        self.place1.save()
        self.place2.save()

        self.route.places.add(self.place1, self.place2)

        self.route.save()

    def test_routes_adds_places(self):
        """
        Creating a route and adding a place to it
        """
        # Getting the object from the database
        route = Route.objects.get(name="Route 101")

        self.assertEqual(route.places.count(), 2)

    def test_add_place_from_route(self):
        """
        Test the method add_place
        """
        self.route.add_place("14 De Septiembre")
        self.route.save()

        self.assertEqual(self.route.places.count(), 3)

    def tearDown(self):
        Place.objects.all().delete()
        Route.objects.all().delete()
Пример #3
0
    def test_place_property(self):
        place = Place()
        place.save()

        self.assertEqual(LegacyPlace.objects.count(), 0)
        lp, is_created = LegacyPlace.get_or_create_smart('14720610.kakao')
        self.assertEqual(LegacyPlace.objects.count(), 1)
        self.assertEqual(lp.place, None)
        self.assertEqual(lp.lp_type, LP_TYPE['kakao'])

        lp2, is_created = LegacyPlace.get_or_create_smart('14720610.kakao')
        self.assertEqual(LegacyPlace.objects.count(), 1)
        self.assertEqual(lp2.place, None)
        self.assertEqual(lp2.lp_type, LP_TYPE['kakao'])
        self.assertEqual(lp2, lp)

        lp3, is_created = LegacyPlace.get_or_create_smart('15738374.kakao')
        self.assertEqual(LegacyPlace.objects.count(), 2)
        self.assertEqual(lp3.place, None)
        self.assertEqual(lp3.lp_type, LP_TYPE['kakao'])
        self.assertNotEqual(lp3, lp)

        lp.place = place
        lp.save()
        self.assertEqual(place.lps.first(), lp)

        lp3.place = place
        with self.assertRaises(IntegrityError):
            lp3.save()
Пример #4
0
 def setUp(self):
     super(UserPlaceTest, self).setUp()
     self.place = Place()
     point = GEOSGeometry('POINT(127.1037430 37.3997320)', srid=4326)
     self.place.lonLat = point
     self.place.save()
     self.vd = VD()
     self.vd.save()
Пример #5
0
    def add_place(self, name):
        """Adds a place from the route model"""
        from place.models import Place

        if not Place.objects.filter(name=name).exists():
            place = Place(name=name)
            place.save()

            self.places.add(place)
            self.save()
Пример #6
0
    def setUp(self):
        self.route = Route(name="Route 101")
        self.place1 = Place(name="Villa Venezuela")
        self.place2 = Place(name="Villa Libertad")

        self.route.save()
        self.place1.save()
        self.place2.save()

        self.route.places.add(self.place1, self.place2)

        self.route.save()
Пример #7
0
def search(request):
    if request.method == "GET":
        query = request.GET.get("q", "")
        flag = False
        places = Place.objects(Q(name__iexact=query))# | Q(address__icontains=query))
        if places.first() == None:
            places = set(list(Place.objects(Q(name__icontains=query))))
            if len(places) < 20:
                places = places.union(claw({"query":query}))
                flag = True
            
    return render_to_response('search.html', {'places': places, 'flag': flag}, context_instance=RequestContext(request))
Пример #8
0
class PlacesTest(TestCase):
    def setUp(self):
        self.route = Route(name="Route 101")
        self.place1 = Place(name="Villa Venezuela")
        self.place2 = Place(name="Villa Libertad")

        self.route.save()
        self.place1.save()
        self.place2.save()

        self.route.places.add(self.place1, self.place2)

        self.route.save()

    def test_places_can_get_route(self):
        """docstring for test_places_can_get_route"""
        place1 = Place.objects.get(name="Villa Venezuela")
        place2 = Place.objects.get(name="Villa Libertad")

        self.assertEqual(place1.routes.all()[0], self.route)
        self.assertEqual(place2.routes.all()[0], self.route)

    def test_add_route_from_place(self):
        self.place1.add_route("Ruta 112")
        self.place1.save()

        self.assertEqual(self.place1.routes.count(), 2)

    def tearDown(self):
        Place.objects.all().delete()
        Route.objects.all().delete()
Пример #9
0
    def test_lonLat_column(self):
        place = Place()
        point1 = GEOSGeometry('POINT(127.1037430 37.3997320)', srid=4326)
        place.lonLat = point1
        place.save()
        saved = Place.objects.first()
        self.assertEqual(place.lonLat, point1)
        self.assertEqual(saved.lonLat, point1)

        point2 = GEOSGeometry('POINT(127.107316 37.400998)', srid=4326)
        qs1 = Place.objects.filter(lonLat__distance_lte=(point2, D(m=100)))
        self.assertEqual(len(qs1), 0)
        qs2 = Place.objects.filter(lonLat__distance_lte=(point2, D(m=1000)))
        self.assertEqual(len(qs2), 1)
Пример #10
0
 def test_placeName_column(self):
     place = Place()
     test_data = '능이향기'
     placeName = PlaceName(content=test_data)
     placeName.save()
     place.placeName = placeName
     place.save()
     saved = Place.objects.first()
     self.assertEqual(place.placeName, placeName)
     self.assertEqual(place.placeName.content, test_data)
     self.assertEqual(saved, place)
     self.assertEqual(saved.placeName, placeName)
     self.assertEqual(saved.placeName.content, test_data)
     self.assertEqual(placeName.places.first(), saved)
     self.assertEqual(
         Place.objects.filter(placeName=placeName).first(), saved)
Пример #11
0
def paste(request, uplace_id):
    vd = vd_login_for_browser(request)
    uplace = UserPlace.objects.get(vd_id__in=vd.realOwner_vd_ids, id=uplace_id)

    if request.method == 'POST':
        pb = PostBase()
        pb.uuid = uplace.uuid
        if 'note' in request.POST and request.POST['note']:
            note, is_created = PlaceNote.get_or_create_smart(
                request.POST['note'])
            pb.notes.append(note)
        if request.FILES:
            for file in request.FILES.itervalues():
                rf = RawFile.objects.create(vd=vd, file=file)
                rf.start()
                img, is_created = Image.get_or_create_smart(rf.url)
                pb.images.append(img)
        if 'lp' in request.POST and request.POST['lp']:
            lp, is_created = LegacyPlace.get_or_create_smart(
                request.POST['lp'])
            pb.lps.append(lp)
            pb_MAMMA = pb.pb_MAMMA
            if pb_MAMMA:
                place, is_created = Place.get_or_create_smart(pb_MAMMA, vd)
                uplace.placed(place)

        if pb.ujson:
            pp = PostPiece.create_smart(uplace, pb)
            if uplace.is_empty:
                uplace.is_empty = False
                uplace.save()

        uplace._clearCache()

    return render(request, 'ui/paste.html', context=dict(uplace=uplace))
Пример #12
0
def listReviews(request):
    if request.method == "POST" :
        user = User()
        user.userId = int(request.POST["userId"])
        
        place = Place()
        place.placeId = int(request.POST["placeId"])
        
        typeId = int(request.POST["typeId"])
        
        data = []       
        for r in Review.objects.filter(reviewPlace_id=place).exclude(reviewUser_id=user) :
            dict = {}
            dict['userId'] = r.reviewUser.userId
            dict['userAlias'] = r.reviewUser.userAlias
            dict['reviewPointPrice'] = r.reviewPointPrice
            dict['reviewPointService'] = r.reviewPointService
            dict['reviewPointLocation'] = r.reviewPointLocation
            dict['reviewPointCondition'] = r.reviewPointCondition
            dict['reviewPointComfort'] = r.reviewPointComfort
            dict['reviewText'] = r.reviewText
            average = float(r.reviewPointPrice+r.reviewPointService+r.reviewPointLocation+r.reviewPointCondition+r.reviewPointComfort) / 5
            dict['averagePoint'] = average
            sp = SimilarityProcess()
            dict['similarityValue'] = sp.process(User.objects.get(userId=user.userId), r.reviewUser, typeId)
            dict['newSimilarityValue'] = float(dict['similarityValue']) * average
            data.append(dict)
        
        #''' normalizing similarity on same place
        minV = min(data, key=lambda x:x['similarityValue'])
        maxV = max(data, key=lambda x:x['similarityValue'])
        minValue = minV['similarityValue']
        maxValue = maxV['similarityValue']    
        for dict in data:
            dict["similarityValue"] = float((dict["similarityValue"] - minValue)/(maxValue - minValue))
            dict['newSimilarityValue'] = dict['similarityValue'] * dict['averagePoint']
            dict['averagePoint'] = str(dict['averagePoint'])
            fuzzy = Fuzzy()
            dict['similarityFlag'] = str(fuzzy.process(dict['similarityValue']))
        #'''
            
        data = sorted(data, key=lambda rev: rev['newSimilarityValue'], reverse=True)
        return HttpResponse(json.dumps(data))
    else :
        return HttpResponse("what?")
Пример #13
0
 def test_get_or_create_smart(self):
     vd = VD.objects.create()
     test_data = 'http://place.kakao.com/places/15738374'
     lp, is_created = LegacyPlace.get_or_create_smart(test_data)
     pb = PostBase()
     pb.lps.append(lp)
     place, is_created = Place.get_or_create_smart(pb.pb_MAMMA, vd)
     placePost = place.placePost
     self.assertDictEqual(pb.pb_MAMMA.json, placePost.json)
     self.assertEqual(unicode(place), '방아깐')
Пример #14
0
 def test_string_representation(self):
     place = Place()
     place.save()
     self.assertEqual(unicode(place), 'No named place object')
     placeName = PlaceName(content='능이향기')
     placeName.save()
     place.placeName = placeName
     place.save()
     self.assertEqual(unicode(place), '능이향기')
Пример #15
0
    def setUp(self):
        super(PostPieceTest, self).setUp()
        self.place = Place()
        self.place.save()
        self.uplace = UserPlace()
        self.uplace.save()
        self.vd = VD()
        self.vd.save()

        self.image, is_created = Image.get_or_create_smart(
            'http://blogthumb2.naver.net/20160302_285/mardukas_1456922688406bYGAH_JPEG/DSC07301.jpg'
        )
        self.url, is_created = Url.get_or_create_smart('http://www.naver.com/')

        self.lp, is_created = LegacyPlace.get_or_create_smart(
            '4ccffc63f6378cfaace1b1d6.4square')
        self.addr, is_created = Address.get_or_create_smart(
            '경기도 하남시 풍산로 270, 206동 402호 (선동, 미사강변도시2단지)')
        self.phone, is_created = PhoneNumber.get_or_create_smart(
            '010-5597-9245')
def update_matches(id, type):
    if type == 'place':
        from place.models import Place as Model
    elif type == 'event':
        from event.models import Event as Model

    a = models.Annotation.objects.get(pk=id)
    a_matches = getattr(a, type == 'place' and 'places' or 'events')

    #remove undefined matches that only have this annotation
    for p in a_matches.filter(defined=False).exclude(name=a.value):
        if p.annotations.exclude(id=id).count() == 0:
            p.delete()
    if a.get_layer().get('type') == type and a_matches.count() == 0:
        a_matches.add(Model.get_or_create(a.value))
        for p in a_matches.all():
            p.update_matches()

    if a.findvalue:
        names = {}
        for n in Model.objects.all().values('id', 'name', 'alternativeNames'):
            names[n['id']] = [
                ox.decode_html(x)
                for x in [n['name']] + json.loads(n['alternativeNames'])
            ]
        value = a.findvalue.lower()

        current = [p.id for p in a_matches.all()]
        matches = []
        name_matches = []
        for i in names:
            for name in names[i]:
                if name.lower() in value:
                    matches.append(i)
                    name_matches.append(name.lower())
                    break
        new = []
        for i in matches:
            p = Model.objects.get(pk=i)
            #only add places/events that did not get added as a super match
            #i.e. only add The Paris Region and not Paris
            if not filter(lambda n: n in name_matches,
                          [n.lower() for n in p.get_super_matches()]):
                new.append(i)
        removed = filter(lambda p: p not in new, current)
        added = filter(lambda p: p not in current, new)
        update = removed + added
        if update:
            for e in Model.objects.filter(id__in=update):
                e.update_matches(models.Annotation.objects.filter(pk=a.id))
    else:
        #annotation has no value, remove all exisint matches
        for e in a_matches.all():
            e.update_matches(models.Annotation.objects.filter(pk=a.id))
Пример #17
0
def update_matches(id, type):
    if type == 'place':
        from place.models import Place as Model
    elif type == 'event':
        from event.models import Event as Model

    a = models.Annotation.objects.get(pk=id)
    a_matches = getattr(a, type == 'place' and 'places' or 'events')

    #remove undefined matches that only have this annotation
    for p in a_matches.filter(defined=False).exclude(name=a.value):
        if p.annotations.exclude(id=id).count() == 0:
            p.delete()
    if a.get_layer().get('type') == type and a_matches.count() == 0:
        a_matches.add(Model.get_or_create(a.value))
        for p in a_matches.all():
            p.update_matches()
    
    if a.findvalue:
        names = {}
        for n in Model.objects.all().values('id', 'name', 'alternativeNames'):
            names[n['id']] = [ox.decode_html(x)
                for x in [n['name']] + json.loads(n['alternativeNames'])]
        value = a.findvalue.lower()

        current = [p.id for p in a_matches.all()]
        matches = []
        name_matches = []
        for i in names:
            for name in names[i]:
                if name.lower() in value:
                    matches.append(i)
                    name_matches.append(name.lower())
                    break
        new = []
        for i in matches: 
            p = Model.objects.get(pk=i)
            #only add places/events that did not get added as a super match
            #i.e. only add The Paris Region and not Paris
            if not filter(lambda n: n in name_matches,
                          [n.lower() for n in p.get_super_matches()]):
                new.append(i)
        removed = filter(lambda p: p not in new, current)
        added = filter(lambda p: p not in current, new)
        update = removed + added
        if update:
            for e in Model.objects.filter(id__in=update):
                e.update_matches(models.Annotation.objects.filter(pk=a.id))
    else:
        #annotation has no value, remove all exisint matches
        for e in a_matches.all():
            e.update_matches(models.Annotation.objects.filter(pk=a.id))
Пример #18
0
def create_place(place_object):
    if not 'name' in place_object:
        create_moderaion(place_object, None)
        return False
    if not place_object['name']:
        create_moderaion(place_object, None)
        return False

    kwargs = {
        'is_published': True,
        'manual_changed': False,
        'identity': place_object['response_url'],
    }
    place = Place(**kwargs)
    for f in ['name', 'url', 'email']:
        if f in place_object:
            setattr(place, f, place_object[f])
    place.save(site=Site.objects.get(id=place_object['site_id']))

    for cat in place_object['category']:
        place.category.add(PlaceCategory.objects.get(id=cat['id']))

    for tag in place_object['tagging']:
        place.tagging.add(Tag.objects.get(id=tag['id']))

    payments = place_object.get('payments')
    if payments:
        payments_list = []
        for p in payments:
            p_slug = pytils.translit.slugify(p)
            payment, is_created = PaymentSystem.objects.get_or_create(
                name=p_slug, display=p)
            payments_list.append(payment)
        place.payments.add(*payments_list)

    if not place_object['adr']:
        create_moderaion(place_object, place)
        return False

    for adr_object in place_object['adr']:
        adr = PlaceAddress()
        adr.address = adr_object['address']
        if 'phone' in adr_object:
            adr.phone = adr_object['phone']
        adr.place = place
        adr.save()

        if 'wt_list' in adr_object:
            for wt_dump in adr_object['wt_list']:
                wt = PlaceAddressWorkTime(**wt_dump)
                wt.address = adr
                wt.save()

    place.save()
    return True
Пример #19
0
def url_placed(request):
    url = None
    places = None
    vd_id = request.session[VD_SESSION_KEY]
    vd = VD.objects.get(id=vd_id)
    if not vd:
        raise ValueError('Admin Login Required')

    if request.method == 'POST':
        raw_url = request.POST['url']
        url, is_created = Url.get_or_create_smart(raw_url)
        if not url:
            raise ValueError('Invalid URL')
        raw_places = request.POST['places']

        for raw_place in raw_places.split('\n'):
            raw_place = raw_place.strip()
            is_remove = False
            if raw_place.startswith('-'):
                is_remove = True
                raw_place = raw_place[1:]
            if not raw_place:
                continue
            lp_content = LegacyPlace.normalize_content(raw_place)
            if lp_content:
                lp, is_created = LegacyPlace.get_or_create_smart(lp_content)
                pb = PostBase()
                pb.lps.append(lp)
                place, is_created = Place.get_or_create_smart(pb.pb_MAMMA, vd)
                if is_remove:
                    url.remove_place(place)
                else:
                    url.add_place(place)
            else:
                raise NotImplementedError
        places = [place for place in url.places.all()]

    return render(request, 'admin2/url_placed.html',
                  dict(url=url, places=places))
Пример #20
0
class UserPlaceTest(APITestBase):
    def setUp(self):
        super(UserPlaceTest, self).setUp()
        self.place = Place()
        point = GEOSGeometry('POINT(127.1037430 37.3997320)', srid=4326)
        self.place.lonLat = point
        self.place.save()
        self.vd = VD()
        self.vd.save()

    def test_save_and_retreive(self):
        uplace = UserPlace(vd=self.vd)
        uplace.save()
        saved = UserPlace.objects.first()
        self.assertEqual(saved, uplace)

    def test_id_property(self):
        uplace = UserPlace(vd=self.vd)
        self.assertEqual(uplace.id, None)
        timestamp = get_timestamp()
        uplace.save()
        self.assertNotEqual(uplace.id, None)
        self.assertAlmostEqual((int(uplace.id) >> 8 * 8) & BIT_ON_8_BYTE,
                               timestamp,
                               delta=1000)
        self.assertEqual((int(uplace.id) >> 2 * 8) & BIT_ON_6_BYTE, self.vd.id)
        saved = UserPlace.objects.first()
        self.assertEqual(saved, uplace)
        self.assertEqual(saved.id, uplace.id)

        # for timestamp property
        self.assertEqual(uplace.created, uplace.modified)
        self.assertEqual(saved.created, uplace.created)
        self.assertEqual(saved.modified, uplace.modified)
        self.assertAlmostEqual(uplace.created, timestamp, delta=1000)

    def test_id_property_with_timestamp(self):
        uplace = UserPlace(vd=self.vd)
        timestamp = get_timestamp()
        uplace.save(timestamp=timestamp)
        self.assertEqual((int(uplace.id) >> 8 * 8) & BIT_ON_8_BYTE, timestamp)
        self.assertEqual((int(uplace.id) >> 2 * 8) & BIT_ON_6_BYTE, self.vd.id)
        saved = UserPlace.objects.first()
        self.assertEqual(saved, uplace)
        self.assertEqual(saved.id, uplace.id)

    def test_id_property_with_no_vd(self):
        uplace = UserPlace()
        uplace.save()
        self.assertEqual((int(uplace.id) >> 2 * 8) & BIT_ON_6_BYTE, 0)

    def test_non_unique_vd_place(self):
        uplace = UserPlace(vd=self.vd, place=self.place)
        uplace.save()
        uplace2 = UserPlace(vd=self.vd, place=self.place)
        uplace2.save()
        self.assertNotEqual(uplace, uplace2)
        self.assertEqual(uplace.place, uplace2.place)

    def test_get_or_create(self):
        uplace, is_created = UserPlace.objects.get_or_create(vd=self.vd,
                                                             place=self.place)
        self.assertEqual(is_created, True)
        uplace2, is_created = UserPlace.objects.get_or_create(vd=self.vd,
                                                              place=self.place)
        self.assertEqual(is_created, False)
        self.assertEqual(uplace, uplace2)

    def test_created_modified(self):
        uplace = UserPlace(vd=self.vd, place=self.place)
        self.assertEqual(uplace.created, None)
        self.assertEqual(uplace.modified, None)
        uplace.save()
        t1 = uplace.modified
        self.assertNotEqual(t1, None)
        self.assertEqual(uplace.created, t1)
        self.assertAlmostEqual(t1, get_timestamp(), delta=1000)
        uplace.save()
        self.assertGreater(uplace.modified, t1)
        self.assertAlmostEqual(uplace.modified, t1, delta=1000)
        self.assertEqual(uplace.created, t1)
        t2 = get_timestamp()
        uplace.save(timestamp=t2)
        self.assertEqual(uplace.modified, t2)
        self.assertEqual(uplace.created, t1)

    def test_lonLat_column(self):
        uplace = UserPlace(vd=self.vd, place=self.place)
        uplace.save()
        point2 = GEOSGeometry('POINT(127.107316 37.400998)', srid=4326)
        qs1 = UserPlace.objects.filter(place__lonLat__distance_lte=(point2,
                                                                    D(m=100)))
        self.assertEqual(len(qs1), 0)
        qs2 = UserPlace.objects.filter(place__lonLat__distance_lte=(point2,
                                                                    D(m=1000)))
        self.assertEqual(len(qs2), 1)
        qs3 = UserPlace.objects.filter(lonLat__distance_lte=(point2, D(m=100)))
        self.assertEqual(len(qs3), 0)
        qs4 = UserPlace.objects.filter(vd_id=self.vd.id).filter(
            lonLat__distance_lte=(point2, D(m=1000)))
        self.assertEqual(len(qs4), 1)
        qs5 = UserPlace.objects.filter(vd_id=0).filter(
            lonLat__distance_lte=(point2, D(m=1000)))
        self.assertEqual(len(qs5), 0)

    def test_mask(self):
        uplace = UserPlace(vd=self.vd, place=self.place)
        uplace.save()
        saved = UserPlace.objects.first()
        self.assertEqual(saved.is_drop, False)
        self.assertEqual(saved.mask, 0 | 0)

        uplace.is_drop = True
        uplace.save()
        saved = UserPlace.objects.first()
        self.assertEqual(saved.is_drop, True)
        self.assertEqual(saved.mask, 0 | 1)
        uplace.is_drop = False
        uplace.save()
        saved = UserPlace.objects.first()
        self.assertEqual(saved.is_drop, False)
        self.assertEqual(saved.mask, 0 | 0)

        uplace.is_hard2placed = True
        uplace.save()
        saved = UserPlace.objects.first()
        self.assertEqual(saved.is_hard2placed, True)
        self.assertEqual(saved.mask, 0 | 2)
        uplace.is_hard2placed = False
        uplace.save()
        saved = UserPlace.objects.first()
        self.assertEqual(saved.is_hard2placed, False)
        self.assertEqual(saved.mask, 0 | 0)

        uplace.is_hurry2placed = True
        uplace.save()
        saved = UserPlace.objects.first()
        self.assertEqual(saved.is_hurry2placed, True)
        self.assertEqual(saved.mask, 0 | 4)
        uplace.is_hurry2placed = False
        uplace.save()
        saved = UserPlace.objects.first()
        self.assertEqual(saved.is_hurry2placed, False)
        self.assertEqual(saved.mask, 0 | 0)

        uplace.is_parent = True
        uplace.save()
        saved = UserPlace.objects.first()
        self.assertEqual(saved.is_parent, True)
        self.assertEqual(saved.mask, 0 | 8)
        uplace.is_parent = False
        uplace.save()
        saved = UserPlace.objects.first()
        self.assertEqual(saved.is_parent, False)
        self.assertEqual(saved.mask, 0 | 0)

        uplace.is_empty = True
        uplace.save()
        saved = UserPlace.objects.first()
        self.assertEqual(saved.is_empty, True)
        self.assertEqual(saved.mask, 0 | 16)
        uplace.is_empty = False
        uplace.save()
        saved = UserPlace.objects.first()
        self.assertEqual(saved.is_empty, False)
        self.assertEqual(saved.mask, 0 | 0)

        uplace.is_bounded = True
        uplace.save()
        saved = UserPlace.objects.first()
        self.assertEqual(saved.is_bounded, True)
        self.assertEqual(saved.mask, 0 | 32)
        uplace.is_bounded = False
        uplace.save()
        saved = UserPlace.objects.first()
        self.assertEqual(saved.is_bounded, False)
        self.assertEqual(saved.mask, 0 | 0)

    def test_get_from_post(self):
        vd_other = VD.objects.create()
        place_other = Place.objects.create()
        uplace1 = UserPlace.objects.create(vd=vd_other, place=self.place)
        uplace2 = UserPlace.objects.create(vd=self.vd, place=place_other)
        uplace3 = UserPlace.objects.create(vd=self.vd, place=self.place)
        pb = PostBase()
        pb.place_id = self.place.id
        ru = RealUser.objects.create(email='*****@*****.**')
        self.vd.realOwner = ru
        self.vd.save()
        vd_mine = VD.objects.create(realOwner=ru)
        uplace_check, is_created = UserPlace.get_or_create_smart(pb, vd_mine)
        self.assertNotEqual(uplace1, uplace_check)
        self.assertNotEqual(uplace2, uplace_check)
        self.assertEqual(uplace3, uplace_check)

    def test_origin(self):
        point = GEOSGeometry('POINT(127.1037430 37.3997320)', srid=4326)
        uplace = UserPlace.objects.create(vd=self.vd, lonLat=point)
        uplace.origin = point
        self.assertEqual(uplace.origin, point)
        self.assertEqual(UserPlace.objects.count(), 1)
        uplace2 = UserPlace.objects.first()
        self.assertEqual(uplace2.origin, None)

    def test_distance_from_origin(self):
        point = GEOSGeometry('POINT(127.1037430 37.3997320)', srid=4326)
        uplace = UserPlace.objects.create(vd=self.vd, lonLat=point)
        self.assertEqual(uplace.distance_from_origin, None)
        uplace.origin = point
        self.assertEqual(uplace.distance_from_origin, '0m')

        point2 = GEOSGeometry('POINT(127.107316 37.400998)', srid=4326)
        uplace.origin = point2
        self.assertEqual(uplace.distance_from_origin, '350m')

        point3 = GEOSGeometry('POINT(127.0 37.0)', srid=4326)
        uplace.origin = point3
        self.assertEqual(uplace.distance_from_origin, '45.3km')

    def test_aid(self):
        uplace = UserPlace.objects.create()
        aid = uplace.aid
        id = UserPlace.aid2id(aid)
        self.assertEqual(id, uplace.id)

    def _skip_test_shorten_url(self):
        place = Place.objects.create()
        uplace = UserPlace.objects.create(place=place)
        self.assertEqual(uplace.shorten_url, None)
        uplace.make_shorten_url()
        self.assertNotEqual(uplace.shorten_url, None)
        self.assertEqual(uplace.shorten_url.startswith('http://goo.gl/'), True)
Пример #21
0
def import_places():
    OLD_LOGOTYPE_PATH = os.path.join(PATH_FOR_OLD_SITE, 'images/afisha/zaveds')
    OLD_PROMOPICTURE_PATH = os.path.join(PATH_FOR_OLD_SITE, 'images/places')
    content_type = ContentType.objects.get_for_model(Place)
    fields = [
        'id',  #pk
        'title',  #title
        'description',  #description
        'url',  #url
        'urlhits',  #urlhits
        'email',  #email
        'logotype',  #logotype
        'logotype_alt',  #logotype_alt
        'picture',  #photo
        'picture_alt',  #photo_alt
        'published',  #is_published
        'promo_published',  #promo_is_up
        'promo_from_date',  #date_promo_up
        'promo_till_date',  #date_promo_down
        'hits',  #hits
    ]
    sql = "SELECT %s FROM jos_places_company" % (', '.join(fields))

    cursor = db.cursor()
    cursor.execute(sql)
    all_rows = cursor.fetchall()

    count = 0
    bar = progressbar.ProgressBar(maxval=len(all_rows),
                                  widgets=[
                                      'import places: ',
                                      progressbar.SimpleProgress(),
                                  ]).start()

    for row in all_rows:
        place = Place(pk=int(row[0]),
                      name=str(row[1]),
                      description=str(row[2]),
                      url=str(row[3]),
                      urlhits=int(row[4]),
                      email=str(row[5]),
                      logotype_alt=str(row[7]),
                      photo_alt=str(row[9]),
                      is_published=bool(row[10]),
                      promo_is_up=bool(row[11]),
                      hits=int(row[14]))
        try:
            place.date_promo_up = datetime.strptime(str(row[12]), \
                '%Y-%m-%d')
        except ValueError:
            pass
        try:
            place.date_promo_down = datetime.strptime(str(row[13]), \
                '%Y-%m-%d')
        except ValueError:
            pass

        path = os.path.join(OLD_LOGOTYPE_PATH, str(row[6]))
        if os.path.isfile(path):
            place.logotype = path
            place.logotype.save(place_gen_file_name(place, path), \
                ContentFile(open(path, 'rb').read()))

        path = os.path.join(OLD_PROMOPICTURE_PATH, str(place.pk),
                            'promo_picture/big', str(row[8]))
        if os.path.isfile(path):
            place.photo = path
            place.photo.save(place_gen_file_name(place, path), \
                ContentFile(open(path, 'rb').read()))

        sql = "SELECT COUNT(*)  FROM jos_places_company_extensions  WHERE company_id=%s and extension_id=1" \
            % place.pk
        cursor = db.cursor()
        cursor.execute(sql)
        result = cursor.fetchall()
        if bool(result[0][0]):
            place.is_new = True

        sql = "SELECT COUNT(*)  FROM jos_places_company_extensions  WHERE company_id=%s and extension_id=2" \
            % place.pk
        cursor = db.cursor()
        cursor.execute(sql)
        result = cursor.fetchall()
        if bool(result[0][0]):
            place.expert_choice = True

        place.save()

        sql = "SELECT tag_id FROM jos_places_category WHERE company_id=%s" \
            % place.pk
        cursor = db.cursor()
        cursor.execute(sql)
        cat_list = cursor.fetchall()
        for row in cat_list:
            cat_pk = int(row[0])
            cat = PlaceCategory.objects.get(main_tag__pk=cat_pk)
            place.category.add(cat)

        sql = "SELECT teg_id FROM jos_tegs_zaveds WHERE zaved_id=%s" \
            % place.pk
        cursor = db.cursor()
        cursor.execute(sql)
        tag_list = cursor.fetchall()
        for row in tag_list:
            tag_pk = int(row[0])
            try:
                tag = Tag.objects.get(pk=tag_pk)
            except:
                pass
            else:
                place.tagging.add(tag)

        import_place_comment(content_type, place)

        place.save()

        import_address(place)

        count += 1
        bar.update(count)
    bar.finish()
Пример #22
0
            #    y1= y.replace('(', '')
            #    y1 = y1.replace(')', '')
            #    y1 = y1.split(',')
            #    if len(y1) > 1:

            get_place = Place.objects.filter(id=a).first()
            if get_place:
                get_place.description = e
                get_place.save()
            else:
                place = Place(
                    source_id=a,
                    county=b,
                    title=c,
                    description=e,
                    action_type=action_type,
                    place_type=g,
                    rule_text=y,
                    owner_text=v,
                    administrator_text=w,
                    contact_text=n,
                    nursery_text=ad,
                    garden_text=ae,
                    link=h,
                    cover_url=i,
                    lat=j,
                    lon=k,
                )
            place.save()
        counter += 1
Пример #23
0
      time.sleep(0.1)
      _g = reverse_geocode('%s,%s'%tuple(json['geopoint']))
      city = None
      for key,value in cities.items():
        if key in _g['address']:
          city = value
          break
      address = _g['address'].split(city.name)
      image = None
      if 'image' in json:
        image,new = Image.objects.get_or_create(src=pull_image(json['image']))
      place = Place(
        name = json['title'],
        address = _g['address'].split(', '+city.name)[0],
        geopoint = 'POINT(%s %s)'%tuple(json['geopoint'][::-1]),
        image = image,
        city=city,
        zipcode = _g['address'].split('TX ')[-1].split(',')[0],
        description = json['desc'],
        source_url = json['link']
      )
      place.save()
      place.source.add(Source.objects.get_or_create(name="CultureMap")[0])
      place.save()
      created += 1
      print "Place Created: %s"%place
  print "%s created and %s found"%(created,found)
      
    #place = Place.objects.get_or_create
  
Пример #24
0
 def test_save_and_retreive(self):
     place = Place()
     place.save()
     saved = Place.objects.first()
     self.assertEqual(saved, place)
Пример #25
0
    def test_post(self):
        place = Place()
        place.save()
        vd1 = VD()
        vd1.save()
        uplace1 = UserPlace(vd=vd1, place=place)
        uplace1.save()
        point1 = GEOSGeometry('POINT(127 37)', srid=4326)
        name1, is_created = PlaceName.get_or_create_smart('능라')
        addr1, is_created = Address.get_or_create_smart(
            '경기도 성남시 분당구 운중동 883-3')
        note11, is_created = PlaceNote.get_or_create_smart('분당 냉면 최고')
        note12, is_created = PlaceNote.get_or_create_smart('만두도 괜찮음')
        imgNote1, is_created = ImageNote.get_or_create_smart('냉면 사진')
        img1_content = 'http://blogthumb2.naver.net/20160302_285/mardukas_1456922688406bYGAH_JPEG/DSC07301.jpg'
        img1, is_created = Image.get_or_create_smart(img1_content)
        phone1, is_created = PhoneNumber.get_or_create_smart('010-5686-1613')

        vd2 = VD()
        vd2.save()
        uplace2 = UserPlace(vd=vd2, place=place)
        uplace2.save()
        point2 = GEOSGeometry('POINT(127.1037430 37.3997320)', srid=4326)
        name2, is_created = PlaceName.get_or_create_smart('능라도')
        addr2, is_created = Address.get_or_create_smart(
            '경기도 성남시 분당구 산운로32번길 12')
        note21, is_created = PlaceNote.get_or_create_smart('여기 가게 바로 옆으로 이전')
        note22, is_created = PlaceNote.get_or_create_smart('평양냉면 맛집')
        img21_content = 'http://blogpfthumb.phinf.naver.net/20100110_16/mardukas_1263055491560_VI01Ic_JPG/DSCN1968.JPG'
        img22_content = 'http://mblogthumb3.phinf.naver.net/20160807_298/mardukas_14705287064440EYVC_JPEG/DSC03530.JPG?type=w800'
        img21, is_created = Image.get_or_create_smart(img21_content)
        img22, is_created = Image.get_or_create_smart(img22_content)
        imgNote2, is_created = ImageNote.get_or_create_smart('만두 사진')
        url2, is_created = Url.get_or_create_smart('http://www.naver.com/')
        lp, is_created = LegacyPlace.get_or_create_smart(
            '4ccffc63f6378cfaace1b1d6.4square')
        phone2, is_created = PhoneNumber.get_or_create_smart('010-5597-9245')

        json_userPost = '''
            {
                "lonLat": {"lon": %f, "lat": %f},
                "name": {"uuid": "%s", "content": "%s"},
                "addr2": {"uuid": "%s", "content": "%s"},
                "notes": [{"uuid": "%s", "content": "%s"}, {"uuid": "%s", "content": "%s"}],
                "images": [{"uuid": "%s", "content": "%s", "note": {"uuid": "%s", "content": "%s"}}],
                "urls": [],
                "lps": [],
                "phone": {"uuid": "%s", "content": "%s"}
            }
        ''' % (
            point1.x,
            point1.y,
            name1.uuid,
            name1.content,
            addr1.uuid,
            addr1.content,
            note12.uuid,
            note12.content,
            note11.uuid,
            note11.content,
            img1.uuid,
            img1.content,
            imgNote1.uuid,
            imgNote1.content,
            phone1.uuid,
            phone1.content,
        )
        json_placePost = '''
            {
                "lonLat": {"lon": %f, "lat": %f},
                "name": {"uuid": "%s", "content": "%s"},
                "addr1": {"uuid": "%s", "content": "%s"},
                "addr2": {"uuid": "%s", "content": "%s"},
                "notes": [
                    {"uuid": "%s", "content": "%s"},
                    {"uuid": "%s", "content": "%s"},
                    {"uuid": "%s", "content": "%s"},
                    {"uuid": "%s", "content": "%s"}
                ],
                "images": [
                    {"uuid": "%s", "content": "%s", "note": null},
                    {"uuid": "%s", "content": "%s", "note": {"uuid": "%s", "content": "%s"}},
                    {"uuid": "%s", "content": "%s", "note": {"uuid": "%s", "content": "%s"}}
                ],
                "urls": [{"uuid": "%s", "content": "%s"}],
                "lps": [{"uuid": "%s", "content": "%s"}],
                "phone": {"uuid": "%s", "content": "%s"}
            }
        ''' % (
            point2.x,
            point2.y,
            name2.uuid,
            name2.content,
            addr2.uuid,
            addr2.content,
            addr1.uuid,
            addr1.content,
            note22.uuid,
            note22.content,
            note21.uuid,
            note21.content,
            note12.uuid,
            note12.content,
            note11.uuid,
            note11.content,
            img22.uuid,
            img22.content,
            img21.uuid,
            img21.content,
            imgNote2.uuid,
            imgNote2.content,
            img1.uuid,
            img1.content,
            imgNote1.uuid,
            imgNote1.content,
            url2.uuid,
            url2.content,
            lp.uuid,
            lp.content,
            phone2.uuid,
            phone2.content,
        )
        pb1 = PostBase(json_userPost)
        pb2 = PostBase(json_placePost)
        self.assertEqual(PostPiece.objects.count(), 0)
        pp1 = PostPiece.create_smart(uplace1, pb1)
        self.assertEqual(PostPiece.objects.count(), 1)
        pp2 = PostPiece.create_smart(uplace2, pb2)
        pp3 = PostPiece.create_smart_4place(place, vd1, pb2, by_MAMMA=True)
        self.assertEqual(PostPiece.objects.count(), 3)

        want_userPost = json_loads(json_userPost)
        want_placePost = json_loads(json_placePost)

        self.assertNotIn('timestamp', uplace1.userPost.json['lonLat'])
        self.assertNotIn('timestamp', uplace1.userPost.json['name'])
        self.assertIn('timestamp', uplace1.userPost.json['notes'][0])
        self.assertNotIn('timestamp', uplace1.userPost.json['images'][0])
        self.assertIn('timestamp', uplace1.userPost.json['images'][0]['note'])

        self.assertNotIn('timestamp', uplace2.userPost.json['urls'][0])
        self.assertNotIn('timestamp', uplace2.userPost.json['lps'][0])
        timestamp = uplace1.userPost.json['notes'][0]['timestamp']
        self.assertAlmostEqual(get_timestamp(), timestamp, delta=1000)
        self.assertIn('summary', uplace1.userPost.json['images'][0])
        self.assertIn('phone', uplace1.userPost.json)
        self.assertNotEqual(uplace1.userPost.json['images'][0]['content'],
                            None)

        self.assertIsSubsetOf(want_userPost, uplace1.userPost)
        self.assertIsNotSubsetOf(uplace1.userPost, want_userPost)

        self.assertIsSubsetOf(want_placePost, uplace1.place.placePost)
        self.assertIsNotSubsetOf(uplace1.place.placePost, want_placePost)
        uplace1._clearCache()
        p1 = uplace1.place.placePost
        uplace2._clearCache()
        p2 = uplace2.place.placePost
        place._clearCache()
        p3 = place.placePost
        self.assertDictEqual(p1.json, p3.json)
        self.assertDictEqual(p2.json, p3.json)

        pb12 = PostBase(json_userPost)
        pb12.update(pb1)
        self.assertNotEqual(pb12.json, pb1.json)
        pb12.normalize()
        self.assertEqual(pb12.json, pb1.json)

        pb13 = PostBase(json_userPost)
        pb13.update(pb1)
        pb13.update(pb1, add=False)
        pb_null = PostBase()
        self.assertEqual(pb13.json, pb_null.json)

        totalPost = place._totalPost
        self.assertIsSubsetOf(uplace1.place.placePost, totalPost)
        #self.assertIsSubsetOf(uplace1.userPost, totalPost)     # Note 에서 timestamp 를 제거해야...
        #self.assertIsSubsetOf(uplace2.userPost, totalPost)     # 상동
        #self.assertIsNotSubsetOf(totalPost, uplace1.place.placePost)   # userPost 를 하나 더 생성해야...

        # child/parent test
        uplace3 = UserPlace.objects.create(parent=uplace1)
        self.assertEqual(uplace3.parent, uplace1)
        self.assertNotEqual(uplace3.userPost, uplace1.userPost)
        self.printJson(uplace3.userPost.json)
        self.printJson(uplace1.userPost.json)
        self.assertEqual(uplace3.userPost.json, uplace1.userPost.json)
        uplace1._clearCache()
        uplace3._clearCache()
        pb3 = PostBase('{"notes": [{"content": "child"}]}')
        pp3 = PostPiece.create_smart(uplace3, pb3)
        self.assertNotEqual(uplace3.userPost, uplace1.userPost)
        self.assertNotEqual(uplace3.userPost.json, uplace1.userPost.json)

        place4 = Place.objects.create()
        uplace4 = UserPlace.objects.create(parent=uplace1,
                                           vd=vd1,
                                           place=place4)
        self.assertEqual(uplace4.parent, uplace1)
        self.assertNotEqual(uplace4.userPost, uplace1.userPost)
        self.assertEqual(uplace4.userPost.json, uplace1.userPost.json)
        uplace1._clearCache()
        uplace4._clearCache()
        pb3 = PostBase('{"notes": [{"content": "child"}]}')
        pp3 = PostPiece.create_smart(uplace4, pb3)
        self.assertNotEqual(uplace4.userPost, uplace1.userPost)
        self.assertNotEqual(uplace4.userPost.json, uplace1.userPost.json)
Пример #26
0
class PostPieceTest(APITestBase):
    def setUp(self):
        super(PostPieceTest, self).setUp()
        self.place = Place()
        self.place.save()
        self.uplace = UserPlace()
        self.uplace.save()
        self.vd = VD()
        self.vd.save()

        self.image, is_created = Image.get_or_create_smart(
            'http://blogthumb2.naver.net/20160302_285/mardukas_1456922688406bYGAH_JPEG/DSC07301.jpg'
        )
        self.url, is_created = Url.get_or_create_smart('http://www.naver.com/')

        self.lp, is_created = LegacyPlace.get_or_create_smart(
            '4ccffc63f6378cfaace1b1d6.4square')
        self.addr, is_created = Address.get_or_create_smart(
            '경기도 하남시 풍산로 270, 206동 402호 (선동, 미사강변도시2단지)')
        self.phone, is_created = PhoneNumber.get_or_create_smart(
            '010-5597-9245')

    def test_save_and_retreive(self):
        pp = PostPiece()
        pp.save()
        saved = PostPiece.objects.first()
        self.assertEqual(saved, pp)

    def test_id_property(self):
        pp = PostPiece(vd=self.vd)
        self.assertEqual(pp.id, None)
        timestamp = get_timestamp()
        pp.save()
        self.assertNotEqual(pp.id, None)
        self.assertAlmostEqual((int(pp.id) >> 8 * 8) & BIT_ON_8_BYTE,
                               timestamp,
                               delta=1000)
        self.assertEqual((int(pp.id) >> 2 * 8) & BIT_ON_6_BYTE, self.vd.id)
        saved = PostPiece.objects.first()
        self.assertEqual(saved, pp)
        self.assertEqual(saved.id, pp.id)

        # for timestamp property
        self.assertEqual(saved.timestamp, pp.timestamp)
        self.assertAlmostEqual(pp.timestamp, timestamp, delta=1000)

    def test_id_property_with_timestamp(self):
        pp = PostPiece(vd=self.vd)
        timestamp = get_timestamp()
        pp.save(timestamp=timestamp)
        self.assertEqual((int(pp.id) >> 8 * 8) & BIT_ON_8_BYTE, timestamp)
        self.assertEqual((int(pp.id) >> 2 * 8) & BIT_ON_6_BYTE, self.vd.id)
        saved = PostPiece.objects.first()
        self.assertEqual(saved, pp)
        self.assertEqual(saved.id, pp.id)

    def test_id_property_with_no_vd(self):
        pp = PostPiece()
        pp.save()
        self.assertEqual((int(pp.id) >> 2 * 8) & BIT_ON_6_BYTE, 0)

    def test_uplace_property(self):
        pp = PostPiece()
        pp.uplace = self.uplace
        pp.save()
        saved = self.uplace.pps.first()
        self.assertEqual(saved, pp)
        self.assertEqual(saved.uplace, pp.uplace)
        self.assertEqual(saved.place, None)

    def test_place_property(self):
        pp = PostPiece()
        pp.place = self.place
        pp.save()
        saved = self.place.pps.first()
        self.assertEqual(saved, pp)
        self.assertEqual(saved.place, pp.place)

        self.uplace.place = self.place
        self.uplace.save()
        pp2 = PostPiece()
        pp2.uplace = self.uplace
        self.assertEqual(pp2.place, None)
        pp2.save()
        self.assertEqual(pp2.place, self.place)

    def test_vd_property(self):
        pp = PostPiece()
        pp.vd = self.vd
        pp.save()
        saved = self.vd.pps.first()
        self.assertEqual(saved, pp)
        self.assertEqual(saved.vd, pp.vd)

    def test_data_property(self):
        # TODO : json 에 대한 query 테스트 추가
        uplace = UserPlace.objects.create()
        pp = PostPiece(uplace=uplace)
        json_add = json_loads('''
            {
                "lonLat": {"lon": 127.1037430, "lat": 37.3997320},
                "images": [{"content": "http://blogthumb2.naver.net/20160302_285/mardukas_1456922688406bYGAH_JPEG/DSC07301.jpg"}],
                "addr1": {"content": "경기도 성남시 분당구 판교로 256번길 25"},
                "addr2": {"content": "경기도 성남시 분당구 삼평동 631"},
                "addr3": {"content": "경기도 성남시 분당구 삼평동"},
                "urls": [{"content": "http://place.kakao.com/places/15738374"}]
            }
        ''')
        pp.data = json_add
        pp.vd = self.vd
        pp.save()
        saved = PostPiece.objects.first()
        self.assertEqual(json_add, pp.data)
        self.assertEqual(json_add, saved.data)
        self.assertEqual(pp.pb.image.vd, pp.vd)
        self.assertEqual(pp.pb.url.vd, pp.vd)

        pp2 = PostPiece()
        pb = PostBase(json_add)
        pp2.pb = pb
        pp2.save()
        saved = PostPiece.objects.order_by('-id').first()
        self.assertEqual(pp2, saved)
        self.assertDictEqual(pp2.pb.json, saved.pb.json)
        self.assertDictEqual(pp2.pb.cjson, saved.pb.cjson)
        self.assertDictEqual(pb.json, saved.pb.json)
        self.assertDictEqual(pb.cjson, saved.pb.cjson)
        self.assertEqual(pp2.pb.image.vd, pp2.vd)
        self.assertEqual(pp2.pb.url.vd, pp2.vd)

    def test_mask(self):
        pp = PostPiece()
        pp.save()
        saved = PostPiece.objects.first()
        self.assertEqual(saved.is_remove, False)
        self.assertEqual(saved.is_add, True)
        self.assertEqual(saved.by_MAMMA, False)
        self.assertEqual(saved.is_drop, False)
        self.assertEqual(saved.mask, 0 | 0)

        pp.is_remove = True
        pp.by_MAMMA = False
        pp.is_drop = True
        pp.save()
        saved = PostPiece.objects.first()
        self.assertEqual(saved.is_remove, True)
        self.assertEqual(saved.is_add, False)
        self.assertEqual(saved.by_MAMMA, False)
        self.assertEqual(saved.is_drop, True)
        self.assertEqual(saved.mask, 4 | 0 | 1)

        pp.is_remove = False
        pp.by_MAMMA = True
        pp.is_drop = False
        pp.save()
        saved = PostPiece.objects.first()
        self.assertEqual(saved.is_remove, False)
        self.assertEqual(saved.is_add, True)
        self.assertEqual(saved.by_MAMMA, True)
        self.assertEqual(saved.is_drop, False)
        self.assertEqual(saved.mask, 0 | 2 | 0)

        pp.by_MAMMA = False
        pp.is_drop = True
        pp.save()
        saved = PostPiece.objects.first()
        self.assertEqual(saved.is_remove, False)
        self.assertEqual(saved.is_add, True)
        self.assertEqual(saved.by_MAMMA, False)
        self.assertEqual(saved.is_drop, True)
        self.assertEqual(saved.mask, 4 | 0 | 0)

        pp.mask = 0
        pp.is_bounded = True
        pp.save()
        saved = PostPiece.objects.first()
        self.assertEqual(saved.is_bounded, True)
        self.assertEqual(saved.mask, 0 | 8)
        pp.is_bounded = False
        pp.save()
        saved = PostPiece.objects.first()
        self.assertEqual(saved.is_bounded, False)
        self.assertEqual(saved.mask, 0 | 0)
Пример #27
0
def enregistrementPlace(request,caracs,skills,items,tags,place):
    #Todo
    #Faire les verifs avant si existe pas Lieu et tout
    Place = Place.objects.create() 
    Lieu = Lieu.objects.create() 
    Lieu.save()
    Place.save()
    Place.Createur =  User.objects.get(id=request.user.id)
    Place.Nom = place['Nom']
    Place.save()
    for categorie in place['Categorie'] :
        try :
            result = CategoriePlace.objects.get(Nom=categorie)
        except :
            result = CategoriePlace.objects.create(Nom=categorie)
            result.save()
        Place.Categorie.add(result)
    Place.save()
    try :
            result = GPS.objects.get(Coord=place['GPS'])
    except :
            result = GPS.objects.create(Coord=place['GPS'])
            result.save()
    Lieu.GPS = result
    Lieu.save()
    try :
            result = Geohash.objects.get(Hash=place['Geohash'])
    except :
            result = Geohash.objects.create(Hash=place['Geohash'])
            result.save()
    Lieu.Geohash = result
    Lieu.save()
    i = 0
    for adresse in place['Adresse'] :
        numero = place['NumAdresse'][i]
        try :
            result = Adresse.objects.get(Rue=adresse,Numero=numero)
        except :
            result = Adresse.objects.create(Rue=adresse,Numero=numero)
            result.save()
        i += 1
        Lieu.Adresse.add(result)
        Lieu.save()
    
    try :
            result = CP.objects.get(Nom=place['CP'])
    except :
            result = CP.objects.create(Nom=place['CP'])
            result.save()
    Lieu.CP = result
    Lieu.save()
    
    try :
            result = Ville.objects.get(Nom=place['Ville'] )
    except :
            result = Ville.objects.create(Nom=place['Ville'] )
            result.save()
    Lieu.Ville = result
    Lieu.save()
    
    try :
            result = Region.objects.get(Nom=place['Region'])
    except :
            result = Region.objects.create(Nom=place['Region'])
            result.save()
    Lieu.Region = result
    Lieu.save()
    
    try :
            result = Pays.objects.get(Nom=place['Pays'])
    except :
            result = Pays.objects.create(Nom=place['Pays'])
            result.save()
    Lieu.Pays = result

    # a optimiser
    try :
            typetransport = TypeTransport.objects.get(Nom=place['TypeTransport1'])
    except :
            typetransport = TypeTransport.objects.create(Nom=place['TypeTransport1'])
            typetransport.save()
    try :
        ligne = Ligne.objects.get(TypeTransport=typetransport,Nom=place['LigneTransport1'])
    except :   
        ligne =  Ligne.objects.create(TypeTransport=typetransport,Nom=place['LigneTransport1'])
        ligne.save()
    try :
        station = Station.objects.get(Ligne__in=ligne,Nom=place['Transport1'])
    except :
        station = Station.objects.create(Nom=place['Transport1'])
        station.Ligne.add(ligne)
        station.save()
    Lieu.Station.add(station)
    try :
            typetransport = TypeTransport.objects.get(Nom=place['TypeTransport2'])
    except :
            typetransport = TypeTransport.objects.create(Nom=place['TypeTransport2'])
            typetransport.save()
    try :
        ligne = Ligne.objects.get(TypeTransport=typetransport,Nom=place['LigneTransport2'])
    except :   
        ligne =  Ligne.objects.create(TypeTransport=typetransport,Nom=place['LigneTransport2'])
        ligne.save()
    try :
        station = Station.objects.get(Ligne__in=ligne,Nom=place['Transport2'])
    except :
        station = Station.objects.create(Nom=place['Transport2'])
        station.Ligne.add(ligne)
        station.save()
    Lieu.Station.add(station)
    try :
            typetransport = TypeTransport.objects.get(Nom=place['TypeTransport3'])
    except :
            typetransport = TypeTransport.objects.create(Nom=place['TypeTransport3'])
            typetransport.save()
    try :
        ligne = Ligne.objects.get(TypeTransport=typetransport,Nom=place['LigneTransport3'])
    except :   
        ligne =  Ligne.objects.create(TypeTransport=typetransport,Nom=place['LigneTransport3'])
        ligne.save()
    try :
        station = Station.objects.get(Ligne__in=ligne,Nom=place['Transport3'])
    except :
        station = Station.objects.create(Nom=place['Transport3'])
        station.Ligne.add(ligne)
        station.save()
    Lieu.Station.add(station)
    try :
            typetransport = TypeTransport.objects.get(Nom=place['TypeTransport4'])
    except :
            typetransport = TypeTransport.objects.create(Nom=place['TypeTransport4'])
            typetransport.save()
    try :
        ligne = Ligne.objects.get(TypeTransport=typetransport,Nom=place['LigneTransport4'])
    except :   
        ligne =  Ligne.objects.create(TypeTransport=typetransport,Nom=place['LigneTransport4'])
        ligne.save()
    try :
        station = Station.objects.get(Ligne__in=ligne,Nom=place['Transport4'])
    except :
        station = Station.objects.create(Nom=place['Transport4'])
        station.Ligne.add(ligne)
        station.save()
    Lieu.Station.add(station)
    try :
            typetransport = TypeTransport.objects.get(Nom=place['TypeTransport5'])
    except :
            typetransport = TypeTransport.objects.create(Nom=place['TypeTransport5'])
            typetransport.save()
    try :
        ligne = Ligne.objects.get(TypeTransport=typetransport,Nom=place['LigneTransport5'])
    except :   
        ligne =  Ligne.objects.create(TypeTransport=typetransport,Nom=place['LigneTransport5'])
        ligne.save()
    try :
        station = Station.objects.get(Ligne__in=ligne,Nom=place['Transport5'])
    except :
        station = Station.objects.create(Nom=place['Transport5'])
        station.Ligne.add(ligne)
        station.save()
    Lieu.Station.add(station)
    try :
            typetransport = TypeTransport.objects.get(Nom=place['TypeTransport6'])
    except :
            typetransport = TypeTransport.objects.create(Nom=place['TypeTransport6'])
            typetransport.save()
    try :
        ligne = Ligne.objects.get(TypeTransport=typetransport,Nom=place['LigneTransport6'])
    except :   
        ligne =  Ligne.objects.create(TypeTransport=typetransport,Nom=place['LigneTransport6'])
        ligne.save()
    try :
        station = Station.objects.get(Ligne__in=ligne,Nom=place['Transport6'])
    except :
        station = Station.objects.create(Nom=place['Transport6'])
        station.Ligne.add(ligne)
        station.save()
    Lieu.Station.add(station)


    Lieu.save()
    Place.Lieu = Lieu
    Place.Telephone = place['Telephone'] 
    Place.Email =  place['Email'] 
    Place.Commentaire =  place['Commentaire']
    Place.save()
   
   #En cours
   #TODO
   # A refaire en propre.
    plage = []
    try :
            result = Plage.objects.get(DebutH=place['LundiM1'],DebutM= place['LundiM11'],FinH=place['LundiM2'], FinM=place['LundiM22'])
    except :
            result = Plage.objects.create(DebutH=place['LundiM1'],DebutM= place['LundiM11'],FinH=place['LundiM2'], FinM=place['LundiM22'])
            result.save()
    plage.append(result)
    try :
            result = Plage.objects.get(DebutH=place['LundiAM1'],DebutM= place['LundiAM11'],FinH=place['LundiAM2'], FinM=place['LundiAM22'])
    except :
            result = Plage.objects.create(DebutH=place['LundiAM1'],DebutM= place['LundiAM11'],FinH=place['LundiAM2'], FinM=place['LundiAM22'])
            result.save()
    plage.append(result)
    try :
            result = Plage.objects.get(DebutH=place['MardiM1'],DebutM= place['MardiM11'],FinH=place['MardiM2'], FinM=place['MardiM22'])
    except :
            result = Plage.objects.create(DebutH=place['MardiM1'],DebutM= place['MardiM11'],FinH=place['MardiM2'], FinM=place['MardiM22'])
            result.save()
    plage.append(result)
    try :
            result = Plage.objects.get(DebutH=place['MardiAM1'],DebutM= place['MardiAM11'],FinH=place['MardiAM2'], FinM=place['MardiAM22'])
    except :
            result = Plage.objects.create(DebutH=place['MardiAM1'],DebutM= place['MardiAM11'],FinH=place['MardiAM2'], FinM=place['MardiAM22'])
            result.save()
    plage.append(result)
    try :
            result = Plage.objects.get(DebutH=place['MercrediM1'],DebutM= place['MercrediM11'],FinH=place['MercrediM2'], FinM=place['MercrediM22'])
    except :
            result = Plage.objects.create(DebutH=place['MercrediM1'],DebutM= place['MercrediM11'],FinH=place['MercrediM2'], FinM=place['MercrediM22'])
            result.save()
    plage.append(result)
    try :
            result = Plage.objects.get(DebutH=place['MercrediAM1'],DebutM= place['MercrediAM11'],FinH=place['MercrediAM2'], FinM=place['MercrediAM22'])
    except :
            result = Plage.objects.create(DebutH=place['MercrediAM1'],DebutM= place['MercrediAM11'],FinH=place['MercrediAM2'], FinM=place['MercrediAM22'])
            result.save()
    plage.append(result)
    try :
            result = Plage.objects.get(DebutH=place['JeudiM1'],DebutM= place['JeudiM11'],FinH=place['JeudiM2'], FinM=place['JeudiM22'])
    except :
            result = Plage.objects.create(DebutH=place['JeudiM1'],DebutM= place['JeudiM11'],FinH=place['JeudiM2'], FinM=place['JeudiM22'])
            result.save()
    plage.append(result)
    try :
            result = Plage.objects.get(DebutH=place['JeudiAM1'],DebutM= place['JeudiAM11'],FinH=place['JeudiAM2'], FinM=place['JeudiAM22'])
    except :
            result = Plage.objects.create(DebutH=place['JeudiAM1'],DebutM= place['JeudiAM11'],FinH=place['JeudiAM2'], FinM=place['JeudiAM22'])
            result.save()
    plage.append(result)
    try :
            result = Plage.objects.get(DebutH=place['VendrediM1'],DebutM= place['VendrediM11'],FinH=place['VendrediM2'], FinM=place['VendrediM22'])
    except :
            result = Plage.objects.create(DebutH=place['VendrediM1'],DebutM= place['VendrediM11'],FinH=place['VendrediM2'], FinM=place['VendrediM22'])
            result.save()
    plage.append(result)
    try :
            result = Plage.objects.get(DebutH=place['VendrediAM1'],DebutM= place['VendrediAM11'],FinH=place['VendrediAM2'], FinM=place['VendrediAM22'])
    except :
            result = Plage.objects.create(DebutH=place['VendrediAM1'],DebutM= place['VendrediAM11'],FinH=place['VendrediAM2'], FinM=place['VendrediAM22'])
            result.save()
    plage.append(result)
    try :
            result = Plage.objects.get(DebutH=place['SamediM1'],DebutM= place['SamediM11'],FinH=place['SamediM2'], FinM=place['SamediM22'])
    except :
            result = Plage.objects.create(DebutH=place['SamediM1'],DebutM= place['SamediM11'],FinH=place['SamediM2'], FinM=place['SamediM22'])
            result.save()
    plage.append(result)
    try :
            result = Plage.objects.get(DebutH=place['SamediAM1'],DebutM= place['SamediAM11'],FinH=place['SamediAM2'], FinM=place['SamediAM22'])
    except :
            result = Plage.objects.create(DebutH=place['SamediAM1'],DebutM= place['SamediAM11'],FinH=place['SamediAM2'], FinM=place['SamediAM22'])
            result.save()
    plage.append(result)
    try :
            result = Plage.objects.get(DebutH=place['DimancheM1'],DebutM= place['DimancheM11'],FinH=place['DimancheM2'], FinM=place['DimancheM22'])
    except :
            result = Plage.objects.create(DebutH=place['DimancheM1'],DebutM= place['DimancheM11'],FinH=place['DimancheM2'], FinM=place['DimancheM22'])
            result.save()
    plage.append(result)
    try :
            result = Plage.objects.get(DebutH=place['DimancheAM1'],DebutM= place['DimancheAM11'],FinH=place['DimancheAM2'], FinM=place['DimancheAM22'])
    except :
            result = Plage.objects.create(DebutH=place['DimancheAM1'],DebutM= place['DimancheAM11'],FinH=place['DimancheAM2'], FinM=place['DimancheAM22'])
            result.save()
    plage.append(result)
    Jour = [
    'Lundi',
    'Mardi',
    'Mercredi',
    'Jeudi',
    'Vendredi',
    'Samedi',
    'Dimanche']
    i = 0
    for j in jour :
        #TODO
        #A optimiser
        try :
            jour = Jour.objects.get(Jour=i+1)
        except :
            jour = Jour.objects.create(Jour=i+1)
        try :
            datejourhaoraire = DateJourHoraire.Object.get(Plage__in=[plage[i+1],plage[i]],Jour=jour)
        except :
            datejourhaoraire = DateJourHoraire.Object.create(Jour=jour)
            datejourhaoraire.Plage.add(plage[i+1])
            datejourhaoraire.Plage.add(plage[i])
            datejourhaoraire.save()
        Place.Horaire.add(datejourhaoraire)
        Place.save()

    Place.Url.add(place['URL1'])
    Place.Url.add(place['URL2']) 
    Place.Url.add(place['URL3']) 
    Place.Url.add(place['URL4'])
    Place.Url.add(place['URL5'])
    Place.save()



    Place.save()
    #TODO
    #Factoriser et expliquer les tags
    tags = tags.split('#')
    # TODO
    # A factoriser
    for tag in tags :
        tag = tag.strip()
        try :
            result = Tag.objects.get(Name=tag)
        except :
            result = Tag.objects.create(Name=tag)
            result.save()
        Place.Tags.add(result)
    Place.save()
    for carac in caracs.keys():
        caracdb  = Carac.objects.get(Nom=carac)
        try :
            result = CaracUser.objects.get(carac=caracdb,Level=int(caracs[carac][0]))
        except :
            result = CaracUser.objects.create(Level=0)
            result.Carac.add(caracdb)
            result.Level = int(caracs[carac][0])
            result.save()
        Place.Caracs.add(result)
    for skill in skills.keys():
        skilldb  = Skill.objects.get(Nom=skill)
        print "nomSki"
        print skilldb.Nom
        private = False
        try :
            result = SkillUser.objects.get(Skills=skilldb,Level=int(skills[skill][0]))
        except :
            result = SkillUser.objects.create(Level=0)
            result.Skill.add(skilldb)
            result.Private = private
            result.Level = int(skills[skill][0])
            result.save()
        Place.Skills.add(result)
    for item in items.keys():
        itemdb  = Item.objects.get(Nom=item)
        try :
            result = ItemUser.objects.get(Item=itemdb)
        except :
            result = ItemUser.objects.create()
            result.Item.add(itemdb)
            result.Private = private
            result.save()
        Place.Items.add(result)
    Place.save()
    sendnotificationPlace(Place)