Пример #1
0
class AdminObjectAdd(OutputClass):

    url_handler = '/admin/objects/add/?'

    def get(self):
        self.checkSession(self.request.headers.get('Cookie'))
        self.insertMenu()
        if self.Session['access'] > 4:
            self.insertTemplate("tpl_object_add.html", { 'editor' : self.insertFckEdit("descr"),
                                                         'button' : 'Добавить',
                                                         'caption': 'Добавление', 
                                                         'isadmin' : True if self.Session['access'] > 7 else False,
                                                          })
        else:
            self.insertContent("У вас нет прав на выполнение этого действия")
        self.drawPage()
    
    def post(self):
        self.checkSession(self.request.headers.get('Cookie'))
        if self.Session['access'] > 4:
            if not self.request.get('name'):
                self.showMessage("Вы не указали имя объекта")
                return
            id = self.request.get('id')
            try: 
                self.object = DBGalleryObject.get_by_id(int(id))
                self.answer = "objectedittrue"
            except:
                self.object = DBGalleryObject()
                self.answer = "objectaddtrue"
            if self.request.get("login"):
                query = db.GqlQuery("SELECT * FROM DBUser WHERE login = :login", login = self.request.get("login"))
                if query.count() == 0: self.object.userid=self.Session['userid']
                for q in query:
                    self.object.userid = int(q.key().id())
            else:
                if self.request.get("userid"):
                    self.object.userid = int(self.request.get("userid"))
                else:
                    self.object.userid = self.Session['userid']
            self.object.name = self.request.get('name')
            self.object.description = self.request.get('descr')
            self.object.smalldescription = self.request.get('smalldescription')
            data = self.request.get('pic')
            if data:
                try:
                    image = images.resize(data, 300, 300)
                    self.object.image = db.Blob(image)
                except:
                    self.showMessage("Картинка объекта не должна быть размером больше, чем 1 Мб.")
                    return
            self.object.put()
            self.redirect('/msgbox/' + self.answer)
        else:
            self.insertContent("У вас нет прав на выполнение этого действия")
            self.drawPage()
Пример #2
0
 def post(self):
     self.checkSession(self.request.headers.get('Cookie'))
     if self.Session['access'] > 4:
         if not self.request.get('name'):
             self.showMessage("Вы не указали имя объекта")
             return
         id = self.request.get('id')
         try:
             self.object = DBGalleryObject.get_by_id(int(id))
             self.answer = "objectedittrue"
         except:
             self.object = DBGalleryObject()
             self.answer = "objectaddtrue"
         if self.request.get("login"):
             query = db.GqlQuery(
                 "SELECT * FROM DBUser WHERE login = :login",
                 login=self.request.get("login"))
             if query.count() == 0:
                 self.object.userid = self.Session['userid']
             for q in query:
                 self.object.userid = int(q.key().id())
         else:
             if self.request.get("userid"):
                 self.object.userid = int(self.request.get("userid"))
             else:
                 self.object.userid = self.Session['userid']
         self.object.name = self.request.get('name')
         self.object.description = self.request.get('descr')
         self.object.smalldescription = self.request.get('smalldescription')
         data = self.request.get('pic')
         if data:
             try:
                 image = images.resize(data, 300, 300)
                 self.object.image = db.Blob(image)
             except:
                 self.showMessage(
                     "Картинка объекта не должна быть размером больше, чем 1 Мб."
                 )
                 return
         self.object.put()
         self.redirect('/msgbox/' + self.answer)
     else:
         self.insertContent("У вас нет прав на выполнение этого действия")
         self.drawPage()
Пример #3
0
 def get(self):
     self.checkSession(self.request.headers.get('Cookie'), False)
     self.insertMenu()
     uri = self.request.uri.split('/')[-1]
     output = self.__messages[uri]
     if uri == "objectaddtrue":
         object = DBGalleryObject.gql("order by date desc limit 0,1")
         output += """<br><a href="/admin/album/add/""" + str(object[0].key().id()) + """\">Добавить фотоальбом к этому объекту</a>"""
         output += """<br><a href="/admin/objects/add/">Добавить еще объект</a>"""
         output += """<br><a href="/admin/objects/">Перейти в управление объектами</a>"""
     self.insertTemplate('tpl_messagebox.html', { 'content' : output } )
     self.drawPage()
Пример #4
0
 def get(self):
     self.checkSession(self.request.headers.get('Cookie'), False)
     self.insertMenu()
     uri = self.request.uri.split('/')[-1]
     output = self.__messages[uri]
     if uri == "objectaddtrue":
         object = DBGalleryObject.gql("order by date desc limit 0,1")
         output += """<br><a href="/admin/album/add/""" + str(object[0].key(
         ).id()) + """\">Добавить фотоальбом к этому объекту</a>"""
         output += """<br><a href="/admin/objects/add/">Добавить еще объект</a>"""
         output += """<br><a href="/admin/objects/">Перейти в управление объектами</a>"""
     self.insertTemplate('tpl_messagebox.html', {'content': output})
     self.drawPage()
Пример #5
0
 def post(self):
     self.checkSession(self.request.headers.get('Cookie'))
     if self.Session['access'] > 4:
         if not self.request.get('name'):
             self.showMessage("Вы не указали имя объекта")
             return
         id = self.request.get('id')
         try: 
             self.object = DBGalleryObject.get_by_id(int(id))
             self.answer = "objectedittrue"
         except:
             self.object = DBGalleryObject()
             self.answer = "objectaddtrue"
         if self.request.get("login"):
             query = db.GqlQuery("SELECT * FROM DBUser WHERE login = :login", login = self.request.get("login"))
             if query.count() == 0: self.object.userid=self.Session['userid']
             for q in query:
                 self.object.userid = int(q.key().id())
         else:
             if self.request.get("userid"):
                 self.object.userid = int(self.request.get("userid"))
             else:
                 self.object.userid = self.Session['userid']
         self.object.name = self.request.get('name')
         self.object.description = self.request.get('descr')
         self.object.smalldescription = self.request.get('smalldescription')
         data = self.request.get('pic')
         if data:
             try:
                 image = images.resize(data, 300, 300)
                 self.object.image = db.Blob(image)
             except:
                 self.showMessage("Картинка объекта не должна быть размером больше, чем 1 Мб.")
                 return
         self.object.put()
         self.redirect('/msgbox/' + self.answer)
     else:
         self.insertContent("У вас нет прав на выполнение этого действия")
         self.drawPage()
Пример #6
0
 def get(self):
     if self.checkSession(self.request.headers.get('Cookie'), False):
         self.insertMenu()
         
     objects = DBGalleryObject.gql("order by date desc limit 50")
     #objects.filter("userid =", self.Session['userid'])
     self.insertContent("<div style='padding: 10px; width: 100%;'>"
                        """<div>Объекты:</div>""")
     for object in objects:
         self.insertContent('<div style="padding: 2 2 2 2; float: left;"><div style="text-align: center; padding-bottom: 2px;"></div><div style="background-opacity: 0.7; padding: 5px; float: left; border-style: solid; border-width: 1px; width: 128px; height: 128px;"><a href="/objects/' + str(object.key().id()) + '"><img alt="'+object.name.encode("utf8")+'" src="/picture/128/crop/0/' + str(object.key().id()) + '"></img></a></div></div>')
     self.insertContent("</div>")
         
     self.drawPage("Последние поступления")
     
Пример #7
0
 def get(self):
     id = int(self.request.uri.split('/')[-1])
     object = DBGalleryObject.get_by_id(id)
     if not super(DelObject, self).get(object.userid): return
     albums = DBAlbum.gql("WHERE objectid = :objectid", objectid = id)
     for album in albums:
         photos = DBPhoto.gql("WHERE albumid = :albumid", albumid = int(album.key().id()))
         for photo in photos:
             try:
                 tags = DBPhotoTags.gql("where imageid = :imageid", imageid = int(photo.key().id()))
                 db.delete(tags)
             except: pass 
         db.delete(photos)
     db.delete(albums)
     db.delete(object)
     self.showMessage("Объект успешно удален")
Пример #8
0
 def post(self):
     if super(AdminAlbumAdd, self).get():
         self.response.headers['Content-Type'] = "text/html"
         if int(self.request.get("isphoto"))==1:
             try:
                 photo = DBPhoto()
                 photo.albumid = int(self.request.get("albumid"))
                 photo.tags = ""
                 secret = str(hashlib.md5(str(random.random())).hexdigest())
                 photo.comment = "secret" + secret
                 image = images.Image(self.request.get('pic'))
                 if (image.width < 400 and image.height < 400) or image.width > 1024 or image.height > 768:
                     self.response.out.write("size")
                     return
                 image_resized = images.Image(images.resize(image._image_data, width=130, output_encoding = images.JPEG)) if image.height >= image.width else images.Image(images.resize(image._image_data, height=130, output_encoding = images.JPEG))
                 image_cropped = images.crop(image_resized._image_data, 0.0, 0.0, float(130)/float(image_resized.width), 1.0, images.JPEG) if image_resized.height == 130 else images.crop(image_resized._image_data, 0.0, 0.0, 1.0, float(130)/float(image_resized.height), images.JPEG)
                 photo.put()
                 photos = DBPhoto.gql("where comment = :cmt", cmt = "secret" + secret)
                 id = str(photos[0].key().id())
                 edphoto = DBPhoto.get_by_id(int(id))
                 edphoto.comment = "none"
                 edphoto.image_small = db.Blob(image_cropped)
                 edphoto.image_big = db.Blob(image._image_data)
                 edphoto.put()
                 self.response.out.write(id)
             except:
                 self.response.out.write("size")
         else:
             if int(self.request.get("deletephoto"))==1:
                 try:
                     photo = DBPhoto.get_by_id(int(self.request.get("photoid")))
                     db.delete(photo)
                     self.response.out.write("deleted")
                 except:
                     self.response.out.write("not deleted")
             else:
                 try:
                     album = DBAlbum.get_by_id(int(self.request.get("albumid")))
                     album.objectid = int(self.request.get("objectid"))
                     object = DBGalleryObject.get_by_id(int(self.request.get("objectid")))
                     album.userid = int(object.userid)
                     album.name = self.request.get("name")
                     album.put()
                     self.response.out.write("added")
                 except:
                     self.response.out.write("not added")
Пример #9
0
    def get(self):
        if self.checkSession(self.request.headers.get('Cookie'), False):
            self.insertMenu()

        objects = DBGalleryObject.gql("order by date desc limit 50")
        #objects.filter("userid =", self.Session['userid'])
        self.insertContent("<div style='padding: 10px; width: 100%;'>"
                           """<div>Объекты:</div>""")
        for object in objects:
            self.insertContent(
                '<div style="padding: 2 2 2 2; float: left;"><div style="text-align: center; padding-bottom: 2px;"></div><div style="background-opacity: 0.7; padding: 5px; float: left; border-style: solid; border-width: 1px; width: 128px; height: 128px;"><a href="/objects/'
                + str(object.key().id()) + '"><img alt="' +
                object.name.encode("utf8") + '" src="/picture/128/crop/0/' +
                str(object.key().id()) + '"></img></a></div></div>')
        self.insertContent("</div>")

        self.drawPage("Последние поступления")
Пример #10
0
    def get_top(self):
#        print 1
        arhs = []
        data = memcache.get("arch_top")
        if data is not None:
            arhs = pickle.loads(data)
#            print 2
        else:
            data = memcache.get("sorted_objects_v2")
#            print 3
            if not data: return arhs
            o_list = pickle.loads(data)[0:25]
            objects = []
            for object in o_list:
                objects.append(DBGalleryObject.get_by_id(object))
            
            rating = {}
    
            u = DBUser()
            
            obj_k = 100.0
            for object in objects:
                try:
                    rating[int(object.userid)] += 1.0*obj_k
                except:
                    rating[int(object.userid)] = 1.0*obj_k
                obj_k /= 1.1
            
            rate = sorted(rating.items(), key = lambda(k,v): (v,k), reverse=True)
            
            for entity in rate[:25]:

                # lets check if user has a photo
                if not DBAvatara().get_by_userid(entity[0]):
                    continue
                
                slovar = {'id': entity[0], 'login' : str(u.get_login_by_id(entity[0]))}
                arhs.append( slovar )
            memcache.add("arch_top", pickle.dumps(arhs), 3600)
        return arhs
Пример #11
0
    def get(self):
        if not super(FavoritesList, self).get():
            self.showMessage(
                "У вас недостаточно прав для выполнения этого действия")
            return
        """ получаем type """

        self.insertMenu()

        user_id = self.Session['userid']

        favs = DBFavorites.gql("where userid = :uid", uid=user_id)
        favorites = []
        fav_objects = []
        for fav in favs:
            if fav.type == 1:
                obj = DBGalleryObject.get_by_id(int(fav.entityid))
                fav_objects.append({
                    'type_cap': "объекты",
                    'type_val': 0,
                    'type_str': 'objects',
                    'id': fav.entityid,
                    'name': obj.name.encode("utf-8"),
                })
            elif fav.type == 2:
                obj = DBAlbum.get_by_id(int(fav.entityid))
                fav_objects.append({
                    'type_cap': "альбомы",
                    #                                    'type_val'  : -1,
                    'type_str': 'album',
                    'id': fav.entityid,
                    'name': obj.name.encode("utf-8"),
                })

        favorites.append(fav_objects)
        self.insertTemplate("tpl_favorites_list.html",
                            {'favorites': favorites})
        self.drawPage("Список избранного")
Пример #12
0
    def get(self):
        self.checkSession(self.request.headers.get('Cookie'))
        if self.Session['access'] > 4:
            self.insertMenu()
            id = int(self.request.uri.split('/')[-1])
            object = DBGalleryObject.get_by_id(id)
            self.insertContent(
                """<div style="padding: 10px;">Связанные фотоальбомы:""")
            albums = db.Query(DBAlbum)
            albums.filter("objectid =", id)
            for album in albums:
                self.insertContent("""<li><a href='/album/""" +
                                   str(album.key().id()) + """'>""" +
                                   album.name.encode("utf8") + """</a></li>""")

            self.insertContent(
                """<div class="form"><a href="/admin/album/add/""" + str(id) +
                """\">Добавить альбом</a></div>""")
            self.insertTemplate(
                "tpl_object_add.html", {
                    'editor':
                    self.insertFckEdit("descr",
                                       object.description.encode("utf8"),
                                       ToolbarSet="Admin"),
                    'name':
                    object.name.encode("utf8"),
                    'button':
                    'Изменить',
                    'caption':
                    'Изменение',
                    'id':
                    str(id),
                    'userid':
                    str(object.userid)
                })
        else:
            self.insertContent("У вас нет прав на выполнение этого действия")
        self.drawPage()
Пример #13
0
 def get(self):
     self.checkSession(self.request.headers.get('Cookie'))
     if self.Session['access'] > 4:
         self.insertMenu()
         id = int(self.request.uri.split('/')[-1])
         object = DBGalleryObject.get_by_id(id)
         self.insertContent("""<div style="padding: 10px;">Связанные фотоальбомы:""")
         albums = db.Query(DBAlbum)
         albums.filter("objectid =", id)
         for album in albums:
             self.insertContent("""<li><a href='/album/""" + str(album.key().id()) + """'>""" + album.name.encode("utf8") + """</a></li>""")
             
         self.insertContent("""<div class="form"><a href="/admin/album/add/""" + str(id) + """\">Добавить альбом</a></div>""")
         self.insertTemplate("tpl_object_add.html", { 'editor'           : self.insertFckEdit("descr", object.description.encode("utf8"), ToolbarSet = "Admin"),
                                                      'name'             : object.name.encode("utf8"),
                                                      'button'           : 'Изменить',
                                                      'caption'          : 'Изменение',
                                                      'id'               : str(id), 
                                                      'userid'           : str(object.userid)
                                                      })
     else:
         self.insertContent("У вас нет прав на выполнение этого действия")
     self.drawPage()
Пример #14
0
    def get(self):
        if not super(FavoritesList, self).get():
            self.showMessage("У вас недостаточно прав для выполнения этого действия")
            return
        """ получаем type """
        
        self.insertMenu()
        
        user_id = self.Session['userid']
        
        favs = DBFavorites.gql("where userid = :uid", uid = user_id)
        favorites = []
        fav_objects = []
        for fav in favs:
            if fav.type == 1:
                obj = DBGalleryObject.get_by_id(int(fav.entityid))
                fav_objects.append({
                                    'type_cap' : "объекты",
                                    'type_val'  : 0,
                                    'type_str'  : 'objects',
                                    'id'    : fav.entityid,
                                    'name'  : obj.name.encode("utf-8"),
                                 })
            elif fav.type == 2:
                obj = DBAlbum.get_by_id(int(fav.entityid))
                fav_objects.append({
                                    'type_cap' : "альбомы",
#                                    'type_val'  : -1,
                                    'type_str'  : 'album',
                                    'id'    : fav.entityid,
                                    'name'  : obj.name.encode("utf-8"),
                                 })
                
        favorites.append(fav_objects)
        self.insertTemplate("tpl_favorites_list.html", { 'favorites' : favorites }) 
        self.drawPage("Список избранного")
Пример #15
0
class AdminObjectAdd(OutputClass):

    url_handler = '/admin/objects/add/?'

    def get(self):
        self.checkSession(self.request.headers.get('Cookie'))
        self.insertMenu()
        if self.Session['access'] > 4:
            self.insertTemplate(
                "tpl_object_add.html", {
                    'editor': self.insertFckEdit("descr"),
                    'button': 'Добавить',
                    'caption': 'Добавление',
                    'isadmin': True if self.Session['access'] > 7 else False,
                })
        else:
            self.insertContent("У вас нет прав на выполнение этого действия")
        self.drawPage()

    def post(self):
        self.checkSession(self.request.headers.get('Cookie'))
        if self.Session['access'] > 4:
            if not self.request.get('name'):
                self.showMessage("Вы не указали имя объекта")
                return
            id = self.request.get('id')
            try:
                self.object = DBGalleryObject.get_by_id(int(id))
                self.answer = "objectedittrue"
            except:
                self.object = DBGalleryObject()
                self.answer = "objectaddtrue"
            if self.request.get("login"):
                query = db.GqlQuery(
                    "SELECT * FROM DBUser WHERE login = :login",
                    login=self.request.get("login"))
                if query.count() == 0:
                    self.object.userid = self.Session['userid']
                for q in query:
                    self.object.userid = int(q.key().id())
            else:
                if self.request.get("userid"):
                    self.object.userid = int(self.request.get("userid"))
                else:
                    self.object.userid = self.Session['userid']
            self.object.name = self.request.get('name')
            self.object.description = self.request.get('descr')
            self.object.smalldescription = self.request.get('smalldescription')
            data = self.request.get('pic')
            if data:
                try:
                    image = images.resize(data, 300, 300)
                    self.object.image = db.Blob(image)
                except:
                    self.showMessage(
                        "Картинка объекта не должна быть размером больше, чем 1 Мб."
                    )
                    return
            self.object.put()
            self.redirect('/msgbox/' + self.answer)
        else:
            self.insertContent("У вас нет прав на выполнение этого действия")
            self.drawPage()
Пример #16
0
    def get(self):
        if self.checkSession(self.request.headers.get('Cookie'), False):
            self.insertMenu()
        id = int(self.request.uri.split('/')[-1])
        object = DBGalleryObject.get_by_id(id)
        
        """ count rating """
        votes = DBGalleryObjectRate.gql("where object = :o_key", o_key = id)
        rating = 0
        for vote in votes:
            if vote.is_nice:
                rating += 1
            else:
                rating -= 1
        if rating <0:
            rating = 0 
        can_vote = DBGalleryObjectRate().still_can_vote(self.Session['userid'], id)
        obj = DBGalleryObjectRate.gql("where object = :o_key and voter = :userid", o_key = id, userid = self.Session['userid'])
        my_vote = bool(obj[0].is_nice) if not can_vote else False
        user = DBUser.get_by_id(int(object.userid))

        albums = db.Query(DBAlbum)
        albums.filter("objectid =", id)
        albumhtml = ""
        for album in albums:
            albumhtml += """
                <div class="main">
        
                <div style="width: 100%; float: left;">
                    <div style="float: left;"><img src="/images/border_left_up.png" /></div>
                    <div style="float: right;"><img src="/images/border_right_up.png" /></div>
                </div>
                
                <div style="padding-left: 20px; margin-right: 20px; font-size: 18px;">Альбом <a href=\"/album/""" + str(album.key().id()) + """\">\"""" + album.name.encode("utf8") + """\"</a></div>
                <div style="padding-left: 20px; padding-top: 10px;">
                <a href=\"/album/""" + str(album.key().id()) + """\">Нажмите, чтобы посмотреть весь альбом</a>
                </div>
                <div style="padding-left: 20px; margin-right: 20px; padding-top: 10px;" class="triggers">
            """
            photos = DBPhoto.gql("where albumid = :albumid limit 0,6", albumid = int(album.key().id()))
            photohtml = ""
            for photo in photos:
                photohtml += """<div style="float: left; width: 136px; margin-right: 10px;"><a href="/picture/watermark/4/""" + str(photo.key().id()) + """\"><img src="/picture/3/""" + str(photo.key().id()) + """\" /></a></div>"""
            albumhtml += photohtml + """
                        <div style="clear: both; margin: 20px 20px 0px 0px; padding-top: 20px;">Комментариев к альбому: """ + str(album.comments_count if album.comments_count else 0) + """</div>
                        </div>
                        
                        <div style="width: 100%; float: left;">
                            <div style="float: left;"><img src="/images/border_left_down.png" /></div>
                            <div style="float: right;"><img src="/images/border_right_down.png" /></div>
                        </div>
                        
                </div>"""
#            self.insertContent("""<li><a href='/album/""" + str(album.key().id()) + """'>""" + album.name.encode("utf8") + """</a></li>""")
        show_rating = False
        if self.Session['access'] >= 0:
            show_rating = True
        self.insertContent("</div>")
        
        new_f = DBFavorites()
        in_fav = new_f.exists(self.Session['userid'], id, 1)

        self.insertTemplate("tpl_object_view.html", { 
                                                      'objectname' : object.name.encode("utf8"), 
                                                      'objectid' : str(id),
                                                      'objectdesription' : object.description.encode("utf8").split("\n")[1][1:-1] if object.description and len(object.description.encode("utf8").split("\n"))>1 else "</p>",
                                                      'ownerlogin' : user.login.encode("utf8"),
                                                      'ownername' : user.name.encode("utf8"),
                                                      'ownersurname' : user.surname.encode("utf8"),
                                                      'albums' : albumhtml,
                                                      'rating' : rating,
                                                      'show_rating' : show_rating,
                                                      'delobject' : True if int(object.userid) == self.Session['userid'] or self.Session['access'] >= 8 else False,
                                                      'can_vote': can_vote,
                                                      'my_vote': my_vote,
                                                      'in_fav' : in_fav,
                                                      } )
        self.drawPage("Объект :: " + object.name.encode("utf8"))
        
Пример #17
0
    def get(self):
        self.checkSession(self.request.headers.get('Cookie'), False)
        id = int(self.request.uri.split('/')[-1])
        self.insertMenu()
        album = DBAlbum.get_by_id(id)
        object = DBGalleryObject.get_by_id(int(album.objectid))

        photos = db.Query(DBPhoto)
        photos.filter("albumid =", id)
        
        user = DBUser.get_by_id(int(object.userid))
            
        
        
#        self.insertContent("""
#        
#        <div id="triggers">
#        """)
        photos_html = ""
        for photo in photos:
#            taghtml = ""
#            try:
#                tags = photo.tags.encode("utf8").split(", ")
#                for tag in tags:
#                    taghtml += tag + """, """
##                    taghtml += """<form style="float: left;" id="search""" + tag + """" action="/search/" method="post"><input type="hidden" name="find" value=""" + tag + """><span class="tag" id="hover" onclick="tagsubmit(\"""" + tag + """\");">""" + tag + """</span></form>"""
#            except: 
#                taghtml = "Тэги отсутствуют"\
            dbtags = DBPhotoTags.gql("where imageid = :imageid", imageid = int(photo.key().id()))
            tags = dbtags[0].tags.encode("utf8") if dbtags.count() != 0 else """Тэги отсутствуют"""
            photos_html += """
    <div style="float: left; width: 136px; margin-right: 10px;">
    <a href="/picture/watermark/4/""" + str(photo.key().id()) + """" title=\"""" + tags + """\">
        <img src="/picture/3/""" + str(photo.key().id()) + """" />
    </a>
"""
#            try:
#                tags = photo.tags.encode("utf8").split(", ")
#                for tag in tags:
#                    self.insertContent("""<div style="float: left;"><form style="float: left;" id="search""" + tag + """" action="/search/" method="post"><input type="hidden" name="find" value=""" + tag + """><span class="tag" id="hover" onclick='$("#search""" + tag + """").submit()'>""" + tag + """</span></form></div>""")
#            except: pass
            try:
                if(self.Session['access'] >=8  or self.Session['userid'] == int(album.userid) ):
                    photos_html += """<div style="float: left; margin-left: 4px;"><span id="hover" class="tag" onclick='window.location = "/edit_photo/%s";'>Редактировать</span></div>""" % str(str(photo.key().id()))
                    photos_html += """<div style="float: left; font-size: 10px; margin-left: 4px;">Photo ID: """ + str(photo.key().id()) + """</div>"""
            except: pass
            photos_html += "</div>"
            
        options = ''
        if self.Session['access'] > 5:
            objects = db.Query(DBGalleryObject)
            if self.Session['access'] < 8:
                objects.filter("userid =", self.Session['userid'])
                if objects.count()!=0: objects.order("name")
            else:
                objects.order("userid")
            
            for objecti in objects:
                owner = DBUser.get_by_id(int(objecti.userid))
                own = """(Объект """ + owner.login.encode("utf8") + """) """
                selected = ""
                if int(objecti.key().id()) == int(album.objectid):
                    selected = "selected"
                options += """<option """ + selected + """ value=""" + str(objecti.key().id()) + """>""" + own + objecti.name.encode("utf8") + """</option>"""
            
        
        new_f = DBFavorites()
        in_fav = new_f.exists(self.Session['userid'], id, 2)
        
        self.insertTemplate("tpl_album_view.html", { 'albumid' : str(id),
                                                                 'isadmin' : True if self.Session['access'] >= 8 else False, 
                                                                 'name' : album.name.encode("utf8"),
                                                                 'connected' : object.name.encode("utf8"),
                                                                 'objectid' : str(object.key().id()),
                                                                 'ownerlogin' : user.login.encode("utf8"),
                                                                 'ownername' : user.name.encode("utf8"),
                                                                 'ownersurname' : user.surname.encode("utf8"),
                                                                 'addphoto' : True if int(object.userid) == self.Session['userid'] or self.Session['access'] >= 8 else False,
                                                                 'photos' : photos_html,
                                                                 'options' : options,
                                                                 'in_fav' : in_fav,
                                                                  })
        self.insertComments(album.key())
        self.drawPage("Альбом :: "+album.name.encode("utf8"))
Пример #18
0
    def get(self):
        if self.checkSession(self.request.headers.get('Cookie'), False):
            self.insertMenu()
        id = int(self.request.uri.split('/')[-1])
        object = DBGalleryObject.get_by_id(id)
        """ count rating """
        votes = DBGalleryObjectRate.gql("where object = :o_key", o_key=id)
        rating = 0
        for vote in votes:
            if vote.is_nice:
                rating += 1
            else:
                rating -= 1
        if rating < 0:
            rating = 0
        can_vote = DBGalleryObjectRate().still_can_vote(
            self.Session['userid'], id)
        obj = DBGalleryObjectRate.gql(
            "where object = :o_key and voter = :userid",
            o_key=id,
            userid=self.Session['userid'])
        my_vote = bool(obj[0].is_nice) if not can_vote else False
        user = DBUser.get_by_id(int(object.userid))

        albums = db.Query(DBAlbum)
        albums.filter("objectid =", id)
        albumhtml = ""
        for album in albums:
            albumhtml += """
                <div class="main">
        
                <div style="width: 100%; float: left;">
                    <div style="float: left;"><img src="/images/border_left_up.png" /></div>
                    <div style="float: right;"><img src="/images/border_right_up.png" /></div>
                </div>
                
                <div style="padding-left: 20px; margin-right: 20px; font-size: 18px;">Альбом <a href=\"/album/""" + str(
                album.key().id()) + """\">\"""" + album.name.encode(
                    "utf8") + """\"</a></div>
                <div style="padding-left: 20px; padding-top: 10px;">
                <a href=\"/album/""" + str(album.key().id(
                    )) + """\">Нажмите, чтобы посмотреть весь альбом</a>
                </div>
                <div style="padding-left: 20px; margin-right: 20px; padding-top: 10px;" class="triggers">
            """
            photos = DBPhoto.gql("where albumid = :albumid limit 0,6",
                                 albumid=int(album.key().id()))
            photohtml = ""
            for photo in photos:
                photohtml += """<div style="float: left; width: 136px; margin-right: 10px;"><a href="/picture/watermark/4/""" + str(
                    photo.key().id()) + """\"><img src="/picture/3/""" + str(
                        photo.key().id()) + """\" /></a></div>"""
            albumhtml += photohtml + """
                        <div style="clear: both; margin: 20px 20px 0px 0px; padding-top: 20px;">Комментариев к альбому: """ + str(
                album.comments_count if album.comments_count else 0
            ) + """</div>
                        </div>
                        
                        <div style="width: 100%; float: left;">
                            <div style="float: left;"><img src="/images/border_left_down.png" /></div>
                            <div style="float: right;"><img src="/images/border_right_down.png" /></div>
                        </div>
                        
                </div>"""
#            self.insertContent("""<li><a href='/album/""" + str(album.key().id()) + """'>""" + album.name.encode("utf8") + """</a></li>""")
        show_rating = False
        if self.Session['access'] >= 0:
            show_rating = True
        self.insertContent("</div>")

        new_f = DBFavorites()
        in_fav = new_f.exists(self.Session['userid'], id, 1)

        self.insertTemplate(
            "tpl_object_view.html", {
                'objectname':
                object.name.encode("utf8"),
                'objectid':
                str(id),
                'objectdesription':
                object.description.encode("utf8").split("\n")[1][1:-1]
                if object.description
                and len(object.description.encode("utf8").split("\n")) > 1 else
                "</p>",
                'ownerlogin':
                user.login.encode("utf8"),
                'ownername':
                user.name.encode("utf8"),
                'ownersurname':
                user.surname.encode("utf8"),
                'albums':
                albumhtml,
                'rating':
                rating,
                'show_rating':
                show_rating,
                'delobject':
                True if int(object.userid) == self.Session['userid']
                or self.Session['access'] >= 8 else False,
                'can_vote':
                can_vote,
                'my_vote':
                my_vote,
                'in_fav':
                in_fav,
            })
        self.drawPage("Объект :: " + object.name.encode("utf8"))