Skip to content

Commit

Permalink
Merge e807e3f into bef3626
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelkuty committed Jul 24, 2015
2 parents bef3626 + e807e3f commit 6cd3f0d
Show file tree
Hide file tree
Showing 146 changed files with 1,933 additions and 924 deletions.
8 changes: 3 additions & 5 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,16 @@ before_install:
install:
- pip install -q $DJANGO_REQUIREMENT django-mptt Pillow feedparser flake8
- pip install -r requirements/tests.txt
- pip install -r requirements/extras/static.txt
- pip install -r requirements/extras/blog.txt
- pip install -r requirements/extras/themes.txt
- pip install -r requirements/extras/sentry.txt
- python setup.py -q install
- if [[ $DB == mysql ]]; then pip install -q mysql-python; fi
- if [[ $DB == postgres ]]; then pip install -q psycopg2; fi
before_script:
- mysql -e 'create database django_leonardo;'
- psql -c 'create database django_leonardo;' -U postgres
script:
- cd tests
- cd tests
- python manage.py migrate contenttypes
- python manage.py migrate dbtemplates
- coverage run manage.py test testapp
after_success:
- coveralls
Expand Down
12 changes: 11 additions & 1 deletion leonardo/base.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,14 @@

import logging

logging.basicConfig()

LOG = logging.getLogger(__name__)


class Default(object):

core = ['web', 'nav', 'media', 'search']
core = ['web', 'nav', 'media', 'search', 'devel', 'leonardo_auth']

@property
def middlewares(self):
Expand Down Expand Up @@ -127,6 +134,7 @@ def get_app_modules(self, apps):
except ImportError:
_app = False
if not _app:
# obsolete part
try:
# check if is not leonardo_module
_app = import_module('leonardo_module_{}'.format(app))
Expand All @@ -139,6 +147,8 @@ def get_app_modules(self, apps):
else:
mod = import_module('.{0}'.format(app), package_string)
modules.append(mod)
else:
LOG.warning('{} was skipped because app was not found in PYTHONPATH'.format(app))
return modules

leonardo = Leonardo()
44 changes: 3 additions & 41 deletions leonardo/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@
IPField, IPv4, IPv6, MultiIPField,
SelectWidget)
from horizon.forms.views import ModalFormMixin, ModalFormView
from horizon_contrib.forms import SelfHandlingForm as _SelfHandlingForm
from horizon_contrib.forms import SelfHandlingModelForm as _SelfHandlingModelForm
from horizon_contrib.forms import SelfHandlingForm
from horizon_contrib.forms import SelfHandlingModelForm
from horizon_contrib.forms.forms import SelfHandlingModelForm as SHMForm
from horizon_contrib.forms.forms import DateForm, SelfHandlingForm
from horizon_contrib.forms.models import create_or_update_and_get
Expand All @@ -19,47 +19,9 @@
from crispy_forms.helper import FormHelper
from crispy_forms.layout import (Field, Fieldset, HTML, Div,
Layout, Reset, Row, Submit)
import floppyforms


class FormHelper(object):

def _wrap_all(self, max_level=4):
"""helper for wrapping all
"""
self.helper.filter(
basestring, max_level=4).wrap(
Field, css_class="form-control")


class SelfHandlingForm(_SelfHandlingForm, FormHelper):

"""standard Horizon's SelfHandlingForm
with bootstrap 3 wrapping functionality
"""

def __init__(self, *args, **kwargs):
super(SelfHandlingForm, self).__init__(*args, **kwargs)

try:
self._wrap_all()
except Exception as e:
raise e


class SelfHandlingModelForm(_SelfHandlingModelForm, FormHelper):

"""standard horizon-contrib's SelfHandlingModelForm
"""

def __init__(self, *args, **kwargs):
super(SelfHandlingModelForm, self).__init__(*args, **kwargs)

try:
self._wrap_all()
except Exception as e:
raise e

# Convenience imports for public API components.

__all__ = [
Expand Down
23 changes: 23 additions & 0 deletions leonardo/module/devel/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@

from django.apps import AppConfig

from .widget import *


default_app_config = 'leonardo.module.devel.Config'

LEONARDO_OPTGROUP = ('Devel widgets')


LEONARDO_WIDGETS = [
ClientInfoWidget,
#DjangoTemplateWidget,
VisualTestWidget,
]

LEONARDO_APPS = ['leonardo.module.devel']


class Config(AppConfig):
name = 'leonardo.module.devel'
verbose_name = "Development module"
File renamed without changes.
4 changes: 4 additions & 0 deletions leonardo/module/devel/widget/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@

from .djangotemplate.models import DjangoTemplateWidget
from .visualtest.models import VisualTestWidget
from .clientinfo.models import ClientInfoWidget
20 changes: 20 additions & 0 deletions leonardo/module/leonardo_auth/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@

from django.apps import AppConfig

from .widget import *

LEONARDO_WIDGETS = [
UserLoginWidget,
UserRegistrationWidget
]

LEONARDO_APPS = ['leonardo.module.leonardo_auth']

default_app_config = 'leonardo.module.leonardo_auth.Config'

LEONARDO_OPTGROUP = 'Auth widgets'


class Config(AppConfig):
name = 'leonardo.module.leonardo_auth'
verbose_name = "Auth module"
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ def __init__(self, *args, **kwargs):
self.helper.layout = Layout(
'username', 'password', InlineCheckboxes('remember'),
)
self._wrap_all()

def handle(self, request, data):

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ class AuthPanel(horizon.Panel):
name = _("Auth")
slug = 'auth'

dashboard.ModuleDashboard.register(AuthPanel)
#dashboard.ModuleDashboard.register(AuthPanel)
File renamed without changes.
3 changes: 3 additions & 0 deletions leonardo/module/leonardo_auth/widget/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@

from .userlogin.models import UserLoginWidget
from .registration.models import UserRegistrationWidget
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@

class UserRegistrationWidget(Widget):

inline = models.BooleanField(verbose_name=_("inline"), default=False)

class Meta:
abstract = True
verbose_name = _("user registration")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,8 @@


class UserLoginWidget(Widget):
inline = models.BooleanField(verbose_name=_("inline"), default=False)
type = models.PositiveIntegerField(verbose_name=_(
"type"), choices=LOGIN_TYPE_CHOICES, default=1)
"type"), choices=LOGIN_TYPE_CHOICES, default=2)

class Meta:
abstract = True
Expand Down
8 changes: 8 additions & 0 deletions leonardo/module/media/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@

class Default(object):

urlconf = 'leonardo.module.media.server.urls'

optgroup = 'Media'

@property
Expand Down Expand Up @@ -45,6 +47,12 @@ def widgets(self):
'MEDIA_ENABLE_PERMISSIONS': (True, _(
'Permissions for downloadable items. Experimental feature.')),
'MEDIA_ALLOW_REGULAR_USERS_TO_ADD_ROOT_FOLDERS': (False, _('ALLOW_REGULAR_USERS_TO_ADD_ROOT_FOLDERS')),
'MEDIA_THUMN_SMALL_GEOM': ('64x64', _('MEDIA_THUMN_SMALL_GEOM')),
'MEDIA_THUMN_SMALL_OPT': ('', _('Another options for small thumnails')),
'MEDIA_THUMN_MEDIUM_GEOM': ('256x256', _('MEDIA_THUMN_MEDIUM_GEOM')),
'MEDIA_THUMN_MEDIUM_OPT': ('', _('Another options for medium thumnails')),
'MEDIA_THUMN_LARGE_GEOM': ('768x768', _('MEDIA_THUMN_LARGE_GEOM')),
'MEDIA_THUMN_LARGE_OPT': ('', _('Another options for large thumnails')),
}


Expand Down
2 changes: 1 addition & 1 deletion leonardo/module/media/admin/fileadmin.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ def delete_view(self, request, object_id, extra_context=None):
"""
parent_folder = None
try:
obj = self.queryset(request).get(pk=unquote(object_id))
obj = self.get_queryset(request).get(pk=unquote(object_id))
parent_folder = obj.folder
except self.model.DoesNotExist:
obj = None
Expand Down
18 changes: 10 additions & 8 deletions leonardo/module/media/admin/patched/admin_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
from __future__ import unicode_literals

from django.contrib.admin.util import NestedObjects, quote
from django.core.urlresolvers import reverse
from django.utils.html import escape
from django.utils.safestring import mark_safe
from django.utils.text import capfirst
Expand All @@ -19,7 +20,8 @@
except ImportError:
# Django < 1.5
from django.utils.encoding import force_unicode as force_text
from django.core.urlresolvers import reverse

from filer.utils.compatibility import get_delete_permission


def get_deleted_objects(objs, opts, user, admin_site, using):
Expand All @@ -43,12 +45,11 @@ def format_callback(obj):

if has_admin:
admin_url = reverse('%s:%s_%s_change'
% (admin_site.name,
opts.app_label,
opts.object_name.lower()),
None, (quote(obj._get_pk_val()),))
p = '%s.%s' % (opts.app_label,
opts.get_delete_permission())
% (admin_site.name,
opts.app_label,
opts.object_name.lower()),
None, (quote(obj._get_pk_val()),))
p = get_delete_permission(opts)
if not user.has_perm(p):
perms_needed.add(opts.verbose_name)
# Display a link to the admin page.
Expand All @@ -70,7 +71,8 @@ def format_callback(obj):


class PolymorphicAwareNestedObjects(NestedObjects):
def collect(self, objs, source_attr=None, **kwargs):

def collect(self, objs, source_attr=None, **kwargs):
if hasattr(objs, 'non_polymorphic'):
# .filter() is needed, because there may already be cached polymorphic results in the queryset
objs = objs.non_polymorphic().filter()
Expand Down
13 changes: 9 additions & 4 deletions leonardo/module/media/admin/permissions.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@

from django.contrib import admin
from django.core.urlresolvers import reverse
from filer.utils.compatibility import DJANGO_1_7


class PrimitivePermissionAwareModelAdmin(admin.ModelAdmin):

def has_add_permission(self, request):
# we don't have a "add" permission... but all adding is handled
# by special methods that go around these permissions anyway
Expand All @@ -26,9 +28,12 @@ def has_delete_permission(self, request, obj=None):
def _get_post_url(self, obj):
""" Needed to retrieve the changelist url as Folder/File can be extended
and admin url may change """
## Code borrowed from django ModelAdmin to determine changelist on the fly
# Code borrowed from django ModelAdmin to determine changelist on the fly
opts = obj._meta
module_name = opts.module_name
if DJANGO_1_7:
model_name = opts.module_name
else:
model_name = opts.model_name
return reverse('admin:%s_%s_changelist' %
(opts.app_label, module_name),
current_app=self.admin_site.name)
(opts.app_label, model_name),
current_app=self.admin_site.name)
2 changes: 1 addition & 1 deletion leonardo/module/media/mediamodels/clipboardmodels.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
@python_2_unicode_compatible
class Clipboard(models.Model):
user = models.ForeignKey(getattr(settings, 'AUTH_USER_MODEL', 'auth.User'), verbose_name=_(
'user'), related_name="filer_clipboards")
'user'), related_name="media_clipboards")
files = models.ManyToManyField(
'media.File', verbose_name=_('files'), related_name="in_clipboards",
through='ClipboardItem')
Expand Down
20 changes: 13 additions & 7 deletions leonardo/module/media/mediamodels/filemodels.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,20 @@
#-*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.core import urlresolvers
import hashlib
import os

from django.conf import settings
from django.core import urlresolvers
from django.core.files.base import ContentFile
from django.db import models
from django.utils.translation import ugettext_lazy as _
from ..fields.multistorage_file import MultiStorageFileField
from filer.utils.compatibility import DJANGO_1_7, python_2_unicode_compatible
from polymorphic import PolymorphicManager, PolymorphicModel

from . import mixins
from .. import settings as filer_settings
from filer.utils.compatibility import python_2_unicode_compatible
from polymorphic import PolymorphicModel, PolymorphicManager
import hashlib
import os
from ..fields.multistorage_file import MultiStorageFileField


class FileManager(PolymorphicManager):
Expand Down Expand Up @@ -215,9 +217,13 @@ def __str__(self):
return text

def get_admin_url_path(self):
if DJANGO_1_7:
model_name = self._meta.module_name
else:
model_name = self._meta.model_name
return urlresolvers.reverse(
'admin:%s_%s_change' % (self._meta.app_label,
self._meta.module_name,),
model_name,),
args=(self.pk,)
)

Expand Down

0 comments on commit 6cd3f0d

Please sign in to comment.