Example #1
0
def clonefile(request):
	import shutil, random
	parent = BaseObject.resolveID(request.session.get('main_object'))
	obj = BaseObject.resolveID(request.POST.get('object_id'))
	newpath = u'%s-%s.%s' % (obj.image.path, random.randint(0,10**9), obj.image.path.split('.')[-1])
	shutil.copyfile(obj.image.path, newpath)
	Photo(parent=parent, author = request.user.is_anonymous and parent.author or request.user, image=newpath).save()
	return showdir(request)
Example #2
0
def clonefile(request):
    import shutil, random
    parent = BaseObject.resolveID(request.session.get('main_object'))
    obj = BaseObject.resolveID(request.POST.get('object_id'))
    newpath = u'%s-%s.%s' % (obj.image.path, random.randint(
        0, 10**9), obj.image.path.split('.')[-1])
    shutil.copyfile(obj.image.path, newpath)
    Photo(parent=parent,
          author=request.user.is_anonymous and parent.author or request.user,
          image=newpath).save()
    return showdir(request)
Example #3
0
def showdir(request):
    from time import mktime
    path = request.POST.get('path', None)
    if not path or path.strip() == '':
        parent = BaseObject.resolveID(request.session.get('main_object', None))
        if not parent:
            parent = Page.objects.get(parent__isnull=True)
    else:
        from core.views import get_object_by_url
        parent = get_object_by_url(path)

    imgs = BaseObject.nodes(parents=[parent], types=['Photo']).all()
    ret = ""
    for r in imgs:
        try:
            ret += """<table class="imageBlock0" cellpadding="0" cellspacing="0"
				filename="%s" fname="%s" ext="%s" path="%s" linkto="%s"
				fsize="%d" date="%s" fwidth="%d" fheight="%d" md5="%s">
				<tr><td valign="bottom" align="center">
				 <div class="imageBlock1">
				  <div class="imageImage">
				   <img src="%s" alt="%s" style="max-width:104px; max-height:116px;"/>
				  </div>
				  <div class="imageName">%s</div>
				 </div>
				</td></tr></table>\n""" % (r.url(), r.url(), "jpg", r.url(), r.url(),
                               r.image.size, r.date_modified.ctime(),
                               r.image.width, r.image.height, r.id,
                               r.thumb_url(), r.title, r.title)
        except:
            pass
    return HttpResponse(ret)
Example #4
0
def delfile(request):
    for key in request.POST:
        if re.search('^md5', key):
            code = request.POST[key]
            obj = BaseObject.resolveID(code)
            obj.delete()
    return showdir(request)
Example #5
0
def uploadfile(request):
    path = request.POST.get('path', None)
    if not path or path.strip() == '':
        parent = BaseObject.resolveID(request.session.get('main_object', None))
        if not parent:
            parent = Page.objects.get(parent__isnull=True)
    else:
        from core.views import get_object_by_url
        parent = get_object_by_url(path)

    if (len(request.FILES)):
        for file in request.FILES.items():
            if -1 == file[1].name.rfind('.'):
                return HttpResponseForbidden()

            (name, ext) = file[1].name.rsplit('.', 2)
            if not ext in ALLOWED_IMAGES:
                return HttpResponseForbidden()

            from django import forms
            meta_form = forms.models.modelform_factory(Photo,
                                                       fields=('image', ))
            f = Photo(parent=parent,
                      author=request.user.is_anonymous and parent.author
                      or request.user)
            frm = meta_form({}, {'image': file[1]}, instance=f)
            if frm.is_valid():
                frm.save()
            else:
                raise Exception("FRM IS NOT VALID")
        return HttpResponse("Готово.")
    else:
        return HttpResponse("Нет файлов для загрузки.")
Example #6
0
def showdir(request):
	from time import mktime
	path = request.POST.get('path', None)
	if not path or path.strip() == '':
		parent = BaseObject.resolveID(request.session.get('main_object', None))
		if not parent:
			parent = Page.objects.get(parent__isnull=True)
	else:
		from core.views import get_object_by_url
		parent = get_object_by_url(path)

	imgs = BaseObject.nodes(parents=[parent], types=['Photo']).all()
	ret = ""
	for r in imgs:
		try:
			ret += """<table class="imageBlock0" cellpadding="0" cellspacing="0"
				filename="%s" fname="%s" ext="%s" path="%s" linkto="%s"
				fsize="%d" date="%s" fwidth="%d" fheight="%d" md5="%s">
				<tr><td valign="bottom" align="center">
				 <div class="imageBlock1">
				  <div class="imageImage">
				   <img src="%s" alt="%s" style="max-width:104px; max-height:116px;"/>
				  </div>
				  <div class="imageName">%s</div>
				 </div>
				</td></tr></table>\n""" % (r.url(), r.url(), "jpg", r.url(), r.url(),
					r.image.size, r.date_modified.ctime(), r.image.width, r.image.height,
					r.id, r.thumb_url(), r.title, r.title)
		except:
			pass
	return HttpResponse( ret )
Example #7
0
def delfile(request):
	for key in request.POST:
		if re.search('^md5', key):
			code = request.POST[key]
			obj = BaseObject.resolveID(code)
			obj.delete()
	return showdir(request)
Example #8
0
def uploadfile(request):
	path = request.POST.get('path', None)
	if not path or path.strip() == '':
		parent = BaseObject.resolveID(request.session.get('main_object', None))
		if not parent:
			parent = Page.objects.get(parent__isnull=True)
	else:
		from core.views import get_object_by_url
		parent = get_object_by_url(path)

	if (len(request.FILES)):
		for file in request.FILES.items():
			if -1 == file[1].name.rfind('.'):
				return HttpResponseForbidden()

			(name, ext) = file[1].name.rsplit('.', 2)
			if not ext in ALLOWED_IMAGES:
				return HttpResponseForbidden()

			from django import forms
			meta_form = forms.models.modelform_factory(Photo, fields = ('image',))
			f = Photo(parent=parent, author = request.user.is_anonymous and parent.author or request.user)
			frm = meta_form({}, {'image':file[1]}, instance=f)
			if frm.is_valid():
				frm.save()
			else:
				raise Exception("FRM IS NOT VALID")
		return HttpResponse( "Готово." )
	else:
		return HttpResponse( "Нет файлов для загрузки." )
Example #9
0
def showpath(request):
    path = request.POST.get('path', None)
    if not path:
        obj = BaseObject.resolveID(request.session.get('main_object', None))
        if not obj:
            path = "/"
        else:
            path = obj.get_absolute_url()
    return HttpResponse(DirPath(request.POST['type'], path))
Example #10
0
def showpath(request):
	path = request.POST.get('path', None)
	if not path:
		obj = BaseObject.resolveID(request.session.get('main_object', None))
		if not obj:
			path = "/"
		else:
			path = obj.get_absolute_url()
	return HttpResponse(DirPath(request.POST['type'], path) )
Example #11
0
def showtree(request):
	path = ''
	if request.POST.has_key('path'): path = request.POST['path']

	obj = BaseObject.resolveID(request.session.get('main_object', None))
	current_node = obj.walktree()[-1]
	p = Page.objects.get(parent__isnull=True)

	ret = ""
	for node in BaseObject.nodes(types=['Page'], parents=[current_node.parent]).all():
		if node.id == current_node.id:
			ret += """<div class="folderOpened %s" path="%s" pathtype="%s">%s (%d)</div>"""%(
				'folderAct', node.get_absolute_url(), "images", node.title[:30], len(node.get_images()) )
		else:
			ret +=  """<div class="folder%s %s" path="%s" pathtype="%s">%s (%d)</div>"""%(
				"S", "", node.get_absolute_url(), "images", node.title[:30], len(node.get_images()) )
	return HttpResponse( ret )
Example #12
0
def showtree(request):
    path = ''
    if request.POST.has_key('path'): path = request.POST['path']

    obj = BaseObject.resolveID(request.session.get('main_object', None))
    current_node = obj.walktree()[-1]
    p = Page.objects.get(parent__isnull=True)

    ret = ""
    for node in BaseObject.nodes(types=['Page'],
                                 parents=[current_node.parent]).all():
        if node.id == current_node.id:
            ret += """<div class="folderOpened %s" path="%s" pathtype="%s">%s (%d)</div>""" % (
                'folderAct', node.get_absolute_url(), "images",
                node.title[:30], len(node.get_images()))
        else:
            ret += """<div class="folder%s %s" path="%s" pathtype="%s">%s (%d)</div>""" % (
                "S", "", node.get_absolute_url(), "images", node.title[:30],
                len(node.get_images()))
    return HttpResponse(ret)
Example #13
0
def get_block(viewlet_dict,
              column,
              obj,
              req,
              fn,
              edit=False,
              new_type=None,
              data=None):
    """ Вычисляет содержимое колонки.

	column ::= {position}
	position ::= col, ":", num
	col ::= "a" | "b" | "c"
	num ::= {digit}

	Значение поля position (см. модель Viewlet):
	position_value ::= object | "$self"
	object ::= class, ":", id
	class ::= models.CLASS_DICT
	id ::= {digit}

	$self -- показывает сам объект, соответствующий текущему baseobject id.
	{a|b|c}:0 -- отключает показ соответствующей колонки.
	"""

    from core.models import BaseObject
    #raise Http404(u'asd')
    local_keys = filter(
        lambda x: x[0] == column and viewlet_dict[x] is not None,
        viewlet_dict.keys())
    if len(local_keys) > 1:
        try:
            del (viewlet_dict["%s:0" % column])
            local_keys = filter(lambda x: x[0] == column, viewlet_dict.keys())
        except:
            pass

    out = u""
    if len(local_keys) == 1 and local_keys[0] == "%s:0" % column:
        return None

    local_keys.sort()

    for key in local_keys:
        if viewlet_dict[key] == "$self":
            t = obj.direct_cast()
        else:
            (cls, oid) = viewlet_dict[key].split(":")
            from core import types
            #			t = getattr(types, cls).objects.get(id=oid)
            t = BaseObject.resolveID(oid)


#			t = BaseObject.objects.get(id=oid).direct_cast()
#			t = eval("%s.objects.get(id=%s)"%(cls,oid))
#		fn(t.__class__.__name__)

# Где грязный хак, тут грязный хак?!
        req.main_object = obj
        req.session['main_object'] = obj.id

        if viewlet_dict[key] != "$self": out += t.render(req)

        # Создаем новый объект
        if new_type is not None:
            req.session['main_object'] = None
            print REGISTRUM['types'][new_type]
            t = (viewlet_dict[key]
                 == "$self") and REGISTRUM['types'][new_type]['cls'](
                     parent=t, type=new_type)

        try:
            out += (viewlet_dict[key] == "$self") and (data
                                                       or t.render(req)) or ''
        except EPlainTextException, E:
            raise E
        except Http302, E:
            raise E
Example #14
0
def get_block(viewlet_dict, column, obj, req, fn, edit=False, new_type=None, data=None):
	""" Вычисляет содержимое колонки.

	column ::= {position}
	position ::= col, ":", num
	col ::= "a" | "b" | "c"
	num ::= {digit}

	Значение поля position (см. модель Viewlet):
	position_value ::= object | "$self"
	object ::= class, ":", id
	class ::= models.CLASS_DICT
	id ::= {digit}

	$self -- показывает сам объект, соответствующий текущему baseobject id.
	{a|b|c}:0 -- отключает показ соответствующей колонки.
	"""

	from core.models import BaseObject
	#raise Http404(u'asd')
	local_keys = filter(lambda x: x[0] == column and viewlet_dict[x] is not None, viewlet_dict.keys())
	if len(local_keys)>1:
		try:
			del(viewlet_dict["%s:0"%column])
			local_keys = filter(lambda x: x[0] == column, viewlet_dict.keys())
		except:
			pass

	out = u""
	if len(local_keys) == 1 and local_keys[0] == "%s:0"%column:
		return None

	local_keys.sort()

	for key in local_keys:
		if viewlet_dict[key] == "$self":
			t = obj.direct_cast()
		else:
			(cls, oid) = viewlet_dict[key].split(":")
			from core import types
#			t = getattr(types, cls).objects.get(id=oid)
			t = BaseObject.resolveID(oid)
#			t = BaseObject.objects.get(id=oid).direct_cast()
#			t = eval("%s.objects.get(id=%s)"%(cls,oid))
#		fn(t.__class__.__name__)

		# Где грязный хак, тут грязный хак?!
		req.main_object = obj
                req.session['main_object'] = obj.id

		if viewlet_dict[key] != "$self": out += t.render(req)

		# Создаем новый объект
		if new_type is not None :
                        req.session['main_object'] = None
			print REGISTRUM['types'][new_type]
			t = (viewlet_dict[key] == "$self") and REGISTRUM['types'][new_type]['cls'](parent=t, type=new_type)

		try:
			out += (viewlet_dict[key] == "$self") and (data or t.render(req)) or ''
		except EPlainTextException, E:
			raise E
		except Http302, E:
			raise E