Example #1
0
File: views.py Project: zjz6b6/TRS
def searchPhotoByLocation(request):
    uid = userModel.currentUser(request)
    
    context = {}
    if uid != None:
        # 搜索信息
        searchInfo = request.GET['searchInfo'].strip()
        pageNum = int(request.GET['page'].strip())-1
        photos = photoModel.searchPhotoByLocation(searchInfo, pageNum, 20)
        context['photos'] = photos
        context['searchInfo'] = searchInfo
        
        context['pageNum'] = pageNum+1
        # 获取页数
        photoCount = photoModel.getSearchPhotoCount(searchInfo)
        limitCount = 20
        pageLimit = 8
        pageCount = math.ceil(photoCount/limitCount)
        context['count'] = photoCount
        context['pageCount'] = pageCount

        # 设置页码信息
        pageStart = max(1, pageNum-pageLimit)
        pageEnd = min(pageCount, pageNum+pageLimit)
        i = pageStart
        pageIndexs = []
        while i <= pageEnd:
            pageIndexs.append(i)
            i = i + 1
        context['pageIndexs'] = pageIndexs

        return render(request, 'search_result.html', context)

    else:
        return HttpResponseRedirect('/user/login')
Example #2
0
File: views.py Project: zjz6b6/TRS
def getPhotoGeoById(request, photoId):
    uid = userModel.currentUser(request)
    context = {}
    if uid != None:
        context['uid'] = uid

        photo = photoModel.getPhotoById(photoId)
        context['photo'] = photo
        return render(request, 'photo_map.html', context)
    else:
        return HttpResponseRedirect('/user/login')
Example #3
0
def index(request):
    uid = userModel.currentUser(request)

    context = {}
    if uid != None:
        context['uid'] = uid
        # 获取此用户的photo's GEO
        photos = photoModel.getPhotosByUser(uid, limitCount=0)

        context['photos'] = photos
        return render(request, 'footprint.html', context)
    else:
        return HttpResponseRedirect('/user/login')
Example #4
0
File: views.py Project: zjz6b6/TRS
def uploadPhoto(request):
    uid = userModel.currentUser(request)
    
    context = {}
    if uid != None:
        context['uid'] = uid

        if request.method == 'POST':
            if 'image' in request.FILES:
                imageFile = request.FILES.get('image')
                newImgPath, newImgId = photoModel.uploadPhoto(uid, imageFile)

                # 获取图片 exif 信息
                from TRS import settings as setting
                import exifread
                filename = setting.TEMPLATES[0]['DIRS'][0] + newImgPath.url
                
                fd = open(filename, 'rb')
                FIELD = 'EXIF DateTimeOriginal'
                exifTags = exifread.process_file(fd)
                fd.close()
                photoTag = {}
                if FIELD in exifTags:
                    # 照片的拍摄时间
                    if 'EXIF DateTimeOriginal' in exifTags:
                        takenDate = str(exifTags['EXIF DateTimeOriginal']) 
                        photoTag['takenDate'] = takenDate[:4] + '-' + takenDate[5:7] + '-' + takenDate[8:]
                    else:
                        photoTag['takenDate'] = None
                    # 照片的经度、纬度(未考虑正负)
                    if 'GPS GPSLongitude' in exifTags and 'GPS GPSLatitude' in exifTags:
                        longitude = str(exifTags['GPS GPSLongitude'])
                        latitude  = str(exifTags['GPS GPSLatitude'])
                        photoTag['longitude'] = GPSChange(longitude[1:-1])  # 去除左右括号
                        photoTag['latitude']  = GPSChange(latitude[1:-1])  # 去除左右括号
                        photoTag['location'],photoTag['provinceId']  = getLocation(str(photoTag['latitude'])  +"," +  str(photoTag['longitude']))
                    else:
                        photoTag['longitude'] = None
                        photoTag['latitude']  = None
                        photoTag['location']  = None
                        photoTag['provinceId'] = None
                    # 存储照片的 exif 信息
                    photoModel.updatePhotoExifsById(newImgId, photoTag)
                return HttpResponseRedirect('/photo/list/1?infoType=success&uploadInfo=上传成功!')
            else:
                return HttpResponseRedirect('/photo/list/1?infoType=danger&uploadInfo=上传失败,无文件!', )
        else:
            context['hasInfo'] = False
            return HttpResponseRedirect('/photo/list/1/')
    else:
        return HttpResponseRedirect('/user/login')
Example #5
0
def recommend(request, provinceId):
    uid = userModel.currentUser(request)

    context = {}
    if uid != None:
        context['uid'] = uid
        simAttractions = []
        # 获取某一用户的关联景点
        attractioms = attractionModel.getAttractionByUser(uid, 10)
        for a in attractioms:
            # 获取景点的相似景点
            oneSimAtt = attractionModel.getSimAttraction(
                a['provinceId'], a['clusterId'], 5, provinceId)
            for s in oneSimAtt:
                # 相似景点不重复且不再用户的关联景点中
                if s not in simAttractions or s not in attractioms:
                    simAttractions.append(s)

        # 根据景点id获取景点信息
        attractions = []
        for a in simAttractions:
            tempDict = {}
            tempDict['provinceName'] = photoModel.getProvinceById(
                a['provinceId'])
            tempDict['provinceId'] = a['provinceId']
            tempDict['clusterId'] = a['clusterId']
            # 获取景点照片数量
            tempDict['photosCount'] = attractionModel.getAttractionPhotosCount(
                a['provinceId'], a['clusterId'])
            # 获取此景点中的一张照片
            tempPhotoId = attractionModel.getAttractionPhotoIds(
                tempDict['provinceId'], tempDict['clusterId'], 1, 1)
            tempPhoto = photoModel.getPhotoById(tempPhotoId[0])
            tempDict['imageUrl'] = tempPhoto['imageUrl']
            attractions.append(tempDict)
        context['attractions'] = attractions

        if provinceId == 0:
            context['recommendArea'] = '全国'
        else:
            context['recommendArea'] = photoModel.getProvinceById(provinceId)
        # 获取省份信息
        context['provinces'] = photoModel.getAllProvinceNameAndId()
        return render(request, 'recommend.html', context)
    else:
        return HttpResponseRedirect('/user/login')
Example #6
0
def AttractionMap(request, provinceId, clusterId):
    uid = userModel.currentUser(request)

    context = {}
    if uid != None:
        context['uid'] = uid

        # 获取照片信息
        photoIds = attractionModel.getAllAttractionPhotoIds(
            provinceId, clusterId)
        photos = []
        for pid in photoIds:
            photos.append(photoModel.getPhotoById(pid))
        context['photos'] = photos
        return render(request, 'attraction_map.html', context)
    else:
        return HttpResponseRedirect('/user/login')
Example #7
0
def AttractionAlbum(request, provinceId, clusterId, pageNum=1):
    pageNum = pageNum - 1
    uid = userModel.currentUser(request)

    context = {}
    if uid != None:
        context['uid'] = uid
        context['provinceId'] = provinceId
        context['clusterId'] = clusterId
        context['pageNum'] = pageNum + 1

        # 获取页数
        photoCount = attractionModel.getAttractionPhotosCount(
            provinceId, clusterId)
        limitCount = 20
        pageLimit = 8
        pageCount = math.ceil(photoCount / limitCount)
        context['count'] = photoCount
        context['pageCount'] = pageCount

        # 设置页码信息
        pageStart = max(1, pageNum - pageLimit)
        pageEnd = min(pageCount, pageNum + pageLimit)
        i = pageStart
        pageIndexs = []
        while i <= pageEnd:
            pageIndexs.append(i)
            i = i + 1
        context['pageIndexs'] = pageIndexs

        # 获取照片信息
        photoIds = attractionModel.getAttractionPhotoIds(
            provinceId, clusterId, pageNum, limitCount)
        photos = []
        for pid in photoIds:
            photos.append(photoModel.getPhotoById(pid))
        context['photos'] = photos

        return render(request, 'attraction_album.html', context)
    else:
        return HttpResponseRedirect('/user/login')
Example #8
0
File: views.py Project: zjz6b6/TRS
def deletePhotoById(request, photoId):
    uid = userModel.currentUser(request)
    
    context = {}
    if uid != None:
        context['uid'] = uid

        if request.method == 'POST':
            # 获取待删除照片的信息
            photo = photoModel.getPhotoById(photoId)
            # 验证用户
            if photo['userName'] == uid:
                photoModel.deletePhotoById(photoId)
                return HttpResponseRedirect('/photo/list/1?infoType=success&uploadInfo=操作成功!')
            else:
                return HttpResponseRedirect('/photo/list/1?infoType=danger&uploadInfo=操作失败,您没有权限删除非您上传的照片!', )
        else:
            context['hasInfo'] = False
            return HttpResponseRedirect('/photo/list/1/')
    else:
        return HttpResponseRedirect('/user/login')
Example #9
0
File: views.py Project: zjz6b6/TRS
def getPhotosByUser(request, pageNum):
    pageNum = pageNum - 1
    uid = userModel.currentUser(request)
    
    context = {}
    if uid != None:
        context['uid'] = uid
        context['pageNum'] = pageNum+1

        # 获取页数
        photoCount = photoModel.getUserPhotosCount(uid)
        limitCount = 20
        pageLimit = 8
        pageCount = math.ceil(photoCount/limitCount)
        context['count'] = photoCount
        context['pageCount'] = pageCount

        # 设置页码信息
        pageStart = max(1, pageNum-pageLimit)
        pageEnd = min(pageCount, pageNum+pageLimit)
        i = pageStart
        pageIndexs = []
        while i <= pageEnd:
            pageIndexs.append(i)
            i = i + 1
        context['pageIndexs'] = pageIndexs
        
        # 获取照片信息
        photos = photoModel.getPhotosByUser(uid, pageNum, limitCount)
        context['photos'] = [p for p in photos if p['isDelete']==0]

        if request.GET.get('infoType') != None:
            context['hasInfo'] = True
            context['infoType'] = request.GET.get('infoType')
            context['uploadInfo'] = request.GET.get('uploadInfo')
        else:
            context['hasInfo'] = False
        return render(request, 'user_album.html', context)
    else:
        return HttpResponseRedirect('/user/login')
Example #10
0
def random(request, provinceId):
    uid = userModel.currentUser(request)
    context = {}
    if uid != None:
        context['uid'] = uid
        simAttractions = []
        simAttractions = attractionModel.getRandomAttraction(provinceId, 12)
        # 根据景点id获取景点信息
        attractions = []
        for a in simAttractions:
            tempDict = {}
            tempDict['provinceName'] = photoModel.getProvinceById(
                a['provinceId'])
            tempDict['provinceId'] = a['provinceId']
            tempDict['clusterId'] = a['clusterId']
            # 获取景点照片数量
            tempDict['photosCount'] = attractionModel.getAttractionPhotosCount(
                a['provinceId'], a['clusterId'])
            # 获取此景点中的一张照片
            tempPhotoId = attractionModel.getAttractionPhotoIds(
                tempDict['provinceId'], tempDict['clusterId'], 1, 1)
            tempPhoto = photoModel.getPhotoById(tempPhotoId[0])
            tempDict['imageUrl'] = tempPhoto['imageUrl']
            attractions.append(tempDict)
        context['attractions'] = attractions
        """
        if provinceId == 0:
            context['recommendArea'] = '全国'
        else:
            context['recommendArea'] = photoModel.getProvinceById(provinceId)
        """
        context['recommendArea'] = photoModel.getProvinceById(provinceId)
        # 获取省份信息
        context['provinces'] = photoModel.getAllProvinceNameAndId()
        return render(request, 'random.html', context)
    else:
        return HttpResponseRedirect('/user/login')