# Conflicts: # .gitignore # app/conf/uwsgi_zuykov.conf.template # trademark/templates/trademark/registration.html # trademark/views.pymaster
commit
86f46363a2
472 changed files with 45343 additions and 27815 deletions
File diff suppressed because one or more lines are too long
@ -0,0 +1,79 @@ |
|||||||
|
aldryn-apphooks-config==0.2.6 |
||||||
|
aldryn-boilerplates==0.7.3 |
||||||
|
aldryn-bootstrap3==0.5.2 |
||||||
|
aldryn-common==0.1.4 |
||||||
|
aldryn-translation-tools==0.2.1 |
||||||
|
cmsplugin-filer==0.10.2 |
||||||
|
dj-database-url==0.3.0 |
||||||
|
Django==1.7.8 |
||||||
|
django-admin-enhancer==1.0.0 |
||||||
|
django-admin-extend==0.0.3 |
||||||
|
django-appconf==1.0.1 |
||||||
|
django-appdata==0.1.4 |
||||||
|
django-classy-tags==0.6.2 |
||||||
|
django-cms==3.1.3 |
||||||
|
django-cms-smartsnippets==0.1.3 |
||||||
|
django-debug-toolbar==1.4 |
||||||
|
django-durationfield==0.5.2 |
||||||
|
django-easy-select2==1.3.1 |
||||||
|
django-filer==0.9.12 |
||||||
|
django-formtools==1.0 |
||||||
|
django-ipware==1.1.1 |
||||||
|
django-meta==0.3.1 |
||||||
|
django-meta-mixin==0.2.1 |
||||||
|
django-mptt==0.7.4 |
||||||
|
django-multipleformwizard==0.2.16 |
||||||
|
django-parler==1.5.1 |
||||||
|
django-phonenumber-field==0.7.2 |
||||||
|
django-pipeline==1.5.4 |
||||||
|
django-polymorphic==0.7.2 |
||||||
|
django-reversion==1.9.3 |
||||||
|
django-sekizai==0.8.2 |
||||||
|
Django-Select2==4.3.2 |
||||||
|
django-sortedm2m==1.0.2 |
||||||
|
django-taggit==0.17.3 |
||||||
|
django-taggit-autosuggest==0.2.7 |
||||||
|
django-tinymce==2.0.5 |
||||||
|
django-treebeard==3.0 |
||||||
|
djangocms-admin-style==0.2.8 |
||||||
|
djangocms-column==1.5 |
||||||
|
djangocms-file==0.1 |
||||||
|
djangocms-flash==0.2.0 |
||||||
|
djangocms-forms==0.1.15 |
||||||
|
djangocms-googlemap==0.3 |
||||||
|
djangocms-inherit==0.1 |
||||||
|
djangocms-installer==0.8.1 |
||||||
|
djangocms-link==1.7.1 |
||||||
|
djangocms-picture==0.1 |
||||||
|
djangocms-style==1.5 |
||||||
|
djangocms-teaser==0.1 |
||||||
|
djangocms-text-ckeditor==2.6.0 |
||||||
|
djangocms-video==0.1 |
||||||
|
easy-thumbnails==2.2 |
||||||
|
futures==3.0.3 |
||||||
|
GeoIP==1.3.2 # Hack: http://xazrad.blogspot.ru/2014/12/django-geoip-ubuntu-mac-os-x.html |
||||||
|
hashids==1.1.0 |
||||||
|
html5lib==0.9999999 |
||||||
|
jsonfield==1.0.3 |
||||||
|
mysql==0.0.1 |
||||||
|
MySQL-python==1.2.5 |
||||||
|
newrelic==2.56.0.42 |
||||||
|
phonenumbers==7.1.0 |
||||||
|
Pillow==3.0.0 |
||||||
|
python-dateutil==2.4.2 |
||||||
|
python-slugify==1.1.4 |
||||||
|
pytz==2015.7 |
||||||
|
pyuca==1.1 |
||||||
|
requests==2.8.1 |
||||||
|
six==1.10.0 |
||||||
|
South==1.0.2 |
||||||
|
sqlparse==0.1.18 |
||||||
|
tablib==0.10.0 |
||||||
|
tzlocal==1.2 |
||||||
|
Unidecode==0.4.18 |
||||||
|
vobject==0.6.6 |
||||||
|
YURL==0.13 |
||||||
|
# |
||||||
|
pymorphy2==0.8 |
||||||
|
pymorphy2-dicts==2.4.393442.3710985 |
||||||
|
DAWG-Python==0.7.2 |
||||||
@ -1,46 +0,0 @@ |
|||||||
.select2-container-multi .select2-choices .select2-search-field input { |
|
||||||
min-width: 100px; |
|
||||||
} |
|
||||||
|
|
||||||
.selector select[multiple] { |
|
||||||
display: block; |
|
||||||
} |
|
||||||
|
|
||||||
.selector { |
|
||||||
width: auto; |
|
||||||
margin-right: 12px; |
|
||||||
} |
|
||||||
|
|
||||||
.selector-available, .selector-chosen { |
|
||||||
width: auto; |
|
||||||
} |
|
||||||
|
|
||||||
.selector .selector-available input, .selector .selector-chosen input { |
|
||||||
margin: 0; |
|
||||||
} |
|
||||||
|
|
||||||
form select { |
|
||||||
max-width: 266px; |
|
||||||
} |
|
||||||
|
|
||||||
.as-selections.vTextField { |
|
||||||
width: 300px; |
|
||||||
} |
|
||||||
|
|
||||||
.as-results ul.as-list { |
|
||||||
margin-left:9em; |
|
||||||
padding-left:0; |
|
||||||
box-shadow: none !important; |
|
||||||
border: 1px solid #888888 !important; |
|
||||||
} |
|
||||||
.as-results ul.as-list li { |
|
||||||
list-style: none; |
|
||||||
} |
|
||||||
ul.as-selections.vTextField { |
|
||||||
padding-left: 10px; |
|
||||||
margin-left:9em; |
|
||||||
} |
|
||||||
|
|
||||||
ul.as-selections li { |
|
||||||
list-style: none; |
|
||||||
} |
|
||||||
@ -1,43 +0,0 @@ |
|||||||
.inline-related { |
|
||||||
border: 1px solid #CCC; |
|
||||||
border-radius: 2px; |
|
||||||
box-shadow: 0 1px 2px 1px rgba(0, 0, 0, 0.08); |
|
||||||
} |
|
||||||
|
|
||||||
.inline-related h3 { |
|
||||||
background-color: #FCFCFC; |
|
||||||
padding: 10px 20px 10px 3px; |
|
||||||
margin: 0; |
|
||||||
text-align: center; |
|
||||||
} |
|
||||||
|
|
||||||
.inline-related .inline_label { |
|
||||||
font-weight: 300; |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
.inline-related .collapse-expand { |
|
||||||
display: inline-block; |
|
||||||
text-transform: uppercase; |
|
||||||
padding: 0px 10px 0px 10px; |
|
||||||
width: 44px; |
|
||||||
float: left; |
|
||||||
text-decoration:none!important; |
|
||||||
} |
|
||||||
|
|
||||||
.add-row { |
|
||||||
height: 26px; |
|
||||||
line-height: 26px; |
|
||||||
text-align: center; |
|
||||||
border: 1px dashed #CCC!important; |
|
||||||
border-radius: 2px; |
|
||||||
margin: 0; |
|
||||||
} |
|
||||||
|
|
||||||
.add-row a { |
|
||||||
display: block; |
|
||||||
padding-left: 14px; |
|
||||||
text-indent: -9999px; |
|
||||||
font-size: 11px; |
|
||||||
background-position: 50% 50%!important; |
|
||||||
} |
|
||||||
@ -1,53 +0,0 @@ |
|||||||
(function($) { |
|
||||||
$(function() { |
|
||||||
var formsubmission_form = $('#formsubmission_form'); |
|
||||||
var form_field = $('select[id="id_form"]', formsubmission_form); |
|
||||||
var headers_field = $('.field-headers', formsubmission_form); |
|
||||||
|
|
||||||
var loadHeaders = function() { |
|
||||||
if (!form_field.val()) { |
|
||||||
headers_field.slideUp('fast'); |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
var data = { |
|
||||||
'csrfmiddlewaretoken': $('input[name="csrfmiddlewaretoken"]').val(), |
|
||||||
'form': $('select[name="form"]').val(), |
|
||||||
'file_type': $('select[name="file_type"]').val() |
|
||||||
}; |
|
||||||
|
|
||||||
$.ajax({ |
|
||||||
type: 'POST', |
|
||||||
url: '', |
|
||||||
data: data, |
|
||||||
success: function(response) { |
|
||||||
if (response.reloadBrowser) { |
|
||||||
location.reload(); |
|
||||||
} |
|
||||||
$('select[id="id_headers_to"]').find('option').remove(); |
|
||||||
|
|
||||||
var headers_input_from = $('select[id="id_headers_from"]'); |
|
||||||
headers_input_from.find('option').remove(); |
|
||||||
|
|
||||||
$.each(response.availableHeaders, function(index, value) { |
|
||||||
headers_input_from.append('<option value=' + value + '>' + value + '</option>'); |
|
||||||
}); |
|
||||||
|
|
||||||
SelectBox.init('id_headers_from'); |
|
||||||
SelectBox.init('id_headers_to'); |
|
||||||
headers_field.slideDown(); |
|
||||||
}, |
|
||||||
error: function() { |
|
||||||
alert('We\'re sorry. Something unexpected happened. Please reload the page and try again.'); |
|
||||||
} |
|
||||||
}); |
|
||||||
|
|
||||||
return false; |
|
||||||
}; |
|
||||||
|
|
||||||
if ($('body').hasClass('export-form')) { |
|
||||||
loadHeaders(); |
|
||||||
form_field.change(loadHeaders); |
|
||||||
} |
|
||||||
}); |
|
||||||
})(django.jQuery); |
|
||||||
@ -1,66 +0,0 @@ |
|||||||
/* |
|
||||||
Makes all inline forms collapsible. |
|
||||||
*/ |
|
||||||
|
|
||||||
jQuery(function($) { |
|
||||||
$.makeCollapsible = function(target, item, collapsible, triggerTarget, setInitStatus, setFirstStatus) |
|
||||||
{ |
|
||||||
var triggerExpand = 'Edit'; |
|
||||||
var triggerCollapse = 'Done'; |
|
||||||
var triggerClass = 'collapse-expand'; |
|
||||||
var triggerLink = '<a class="' + triggerClass + '" href="javascript:void(0);"></a>'; |
|
||||||
|
|
||||||
$(target).find(item).each(function(i) { |
|
||||||
if ($(this).data('isCollapsible')) return; |
|
||||||
$(this).data('isCollapsible', true); |
|
||||||
|
|
||||||
$(this).find(collapsible).hide(); |
|
||||||
|
|
||||||
// trigger already exists if created with "Add another" link
|
|
||||||
var trigger = $(this).find(triggerTarget).find('.'+triggerClass); |
|
||||||
if (!trigger.length) { |
|
||||||
trigger = $(triggerLink); |
|
||||||
$(this).find(triggerTarget).html(trigger); |
|
||||||
} |
|
||||||
|
|
||||||
var item = this; |
|
||||||
var toggleCollapse = function(status, speed) |
|
||||||
{ |
|
||||||
if (status == null) { |
|
||||||
status = !item.collapseStatus; |
|
||||||
} |
|
||||||
if (speed == null) { |
|
||||||
speed = 1; |
|
||||||
} |
|
||||||
item.collapseStatus = status; |
|
||||||
if (status) { |
|
||||||
trigger.html(triggerCollapse); |
|
||||||
$(item).find(collapsible).slideDown('slow'); |
|
||||||
} else { |
|
||||||
trigger.html(triggerExpand); |
|
||||||
$(item).find(collapsible).slideUp('slow'); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
trigger.click(function(event) { |
|
||||||
event.preventDefault(); |
|
||||||
toggleCollapse(null, 'normal') |
|
||||||
}) |
|
||||||
|
|
||||||
// Collapse by default unless there are errors
|
|
||||||
initStatus = setInitStatus != null ? setInitStatus : $(this).find('.errors').length != 0; |
|
||||||
firstStatus = setFirstStatus != null ? setFirstStatus : initStatus; |
|
||||||
|
|
||||||
toggleCollapse(i == 0 ? firstStatus : initStatus) |
|
||||||
}); |
|
||||||
}; |
|
||||||
|
|
||||||
var init = function() { |
|
||||||
$.makeCollapsible('div.inline-group', 'div.inline-related', 'fieldset', 'h3 b'); |
|
||||||
}; |
|
||||||
init(); |
|
||||||
// init again when "Add another" link is clicked
|
|
||||||
$('.add-row a').click(function() { |
|
||||||
init(); |
|
||||||
}) |
|
||||||
}); |
|
||||||
@ -1,95 +0,0 @@ |
|||||||
/* |
|
||||||
Enables repositioning of all inline elements by drag & drop. |
|
||||||
|
|
||||||
The inline model requires is a "position" field that is blank by default. |
|
||||||
This value will be set automatically by this code snippet when dragging elements. |
|
||||||
The model instances can then be ordered by that "position" field. |
|
||||||
*/ |
|
||||||
|
|
||||||
jQuery(function($) { |
|
||||||
|
|
||||||
var positionField = 'position'; |
|
||||||
var target = $('div.inline-group#fields-group'); |
|
||||||
var handle = 'h3'; |
|
||||||
var item = 'div.inline-related'; |
|
||||||
var positionInput = 'input[id$=-'+positionField+']'; |
|
||||||
var hidePositionFieldClosest = '.form-row'; |
|
||||||
|
|
||||||
var renumberAll = function() { |
|
||||||
var pos = 1; |
|
||||||
target.find(item).each(function(i) { |
|
||||||
$(this).removeClass('odd even').addClass(i % 2 ? 'even' : 'odd'); |
|
||||||
if ($(this).find(positionInput).val() != '') { |
|
||||||
$(this).find(positionInput).val(pos); |
|
||||||
pos++; |
|
||||||
} |
|
||||||
}); |
|
||||||
}; |
|
||||||
|
|
||||||
var init = function() { |
|
||||||
target.find(item).each(function(i) { |
|
||||||
if ($(this).data('isSortable')) return; |
|
||||||
$(this).data('isSortable', true); |
|
||||||
$(this).find(handle).css('cursor', 'ns-resize'); |
|
||||||
$(this).find(handle).addClass('draggable'); |
|
||||||
$(this).find(positionInput).each(function() { |
|
||||||
if (hidePositionFieldClosest) { |
|
||||||
var hidden =$('<input type="hidden" id="'+this.id+'" name="'+this.name+'" />'); |
|
||||||
hidden.val($(this).val()); |
|
||||||
$(this).closest(hidePositionFieldClosest).replaceWith(hidden); |
|
||||||
} |
|
||||||
}); |
|
||||||
$(this).find('input, select, textarea').change(function() { |
|
||||||
$(this).closest(item).find('input[id$='+positionField+']').val('X'); // mark for renumberAll() to fill in
|
|
||||||
renumberAll($('div.inline-group')); |
|
||||||
}); |
|
||||||
}); |
|
||||||
}; |
|
||||||
|
|
||||||
var addRow = target.find('.add-row'); |
|
||||||
addRow.remove(); |
|
||||||
var ordered = []; |
|
||||||
var unordered = []; |
|
||||||
// Initially, remove and re-append all inlines ordered by their "position" value
|
|
||||||
target.find(item).each(function(i) { |
|
||||||
var initialPos = $(this).find(positionInput).val(); |
|
||||||
if (initialPos) { |
|
||||||
while (initialPos < ordered.length && ordered[initialPos]) { |
|
||||||
initialPos++; |
|
||||||
} |
|
||||||
ordered[initialPos] = this; |
|
||||||
} else { |
|
||||||
unordered[unordered.length] = this; |
|
||||||
} |
|
||||||
$(this).removeClass('odd even').addClass(i % 2 ? 'even' : 'odd'); |
|
||||||
this.parentElement.removeChild(this); |
|
||||||
}); |
|
||||||
for (var i = 0; i < ordered.length; i++) { |
|
||||||
var el = ordered[i]; |
|
||||||
if (el) { |
|
||||||
target.append(el); |
|
||||||
} |
|
||||||
} |
|
||||||
// Add "position"-less elements in the end
|
|
||||||
for (var i = 0; i < unordered.length; i++) { |
|
||||||
var el = unordered[i]; |
|
||||||
target.append(el); |
|
||||||
} |
|
||||||
target.append(addRow); |
|
||||||
|
|
||||||
target.sortable({ |
|
||||||
containment: 'parent', |
|
||||||
items: item, |
|
||||||
handle: handle, |
|
||||||
update: renumberAll, |
|
||||||
revert: true, |
|
||||||
opacity: 0.9 |
|
||||||
}); |
|
||||||
|
|
||||||
init(); |
|
||||||
// init again when "Add another" link is clicked
|
|
||||||
$('.add-row a').click(function() { |
|
||||||
init(); |
|
||||||
}); |
|
||||||
|
|
||||||
}); |
|
||||||
@ -1,45 +0,0 @@ |
|||||||
/* |
|
||||||
Replaces the name in an inline element's header while typing it in the input of the "name" field. |
|
||||||
This way, the extra inline element's header will be named instead of numbered #4, #5 etc. |
|
||||||
*/ |
|
||||||
|
|
||||||
jQuery(function($) { |
|
||||||
|
|
||||||
var target = $('div.inline-group'); |
|
||||||
var item = 'div.inline-related'; |
|
||||||
var nameInput = 'input[id*=-label]'; |
|
||||||
var typeInput = 'select[id*=-field_type]'; |
|
||||||
|
|
||||||
|
|
||||||
var init = function() { |
|
||||||
target.find(item).each(function() { |
|
||||||
var nameField = $(this).find(nameInput); |
|
||||||
var typeField = $(this).find(typeInput); |
|
||||||
var label = $('.inline_label', this); |
|
||||||
var rename = function() { |
|
||||||
if (nameField.val()) { |
|
||||||
label.text(nameField.val()); |
|
||||||
} |
|
||||||
else { |
|
||||||
label.text(typeField.find('option:selected').text() + ' Field'); |
|
||||||
} |
|
||||||
}; |
|
||||||
nameField.keyup(function(event) { |
|
||||||
// Update name while typing
|
|
||||||
rename(); |
|
||||||
}); |
|
||||||
|
|
||||||
typeField.change(function(){ |
|
||||||
rename(); |
|
||||||
}); |
|
||||||
rename(); |
|
||||||
}) |
|
||||||
} |
|
||||||
|
|
||||||
init(); |
|
||||||
|
|
||||||
// init again when "Add another" link is clicked
|
|
||||||
$('.add-row a').click(function() { |
|
||||||
init(); |
|
||||||
}) |
|
||||||
}); |
|
||||||
@ -1,35 +0,0 @@ |
|||||||
jQuery(function($) { |
|
||||||
var target = $('div.inline-group'); |
|
||||||
var item = 'div.inline-related'; |
|
||||||
var typeInput = 'select[id*=-field_type]'; |
|
||||||
|
|
||||||
var init = function() { |
|
||||||
target.find(item).each(function() { |
|
||||||
var that = $(this); |
|
||||||
var inputField = that.find(typeInput); |
|
||||||
var toggleField = function() { |
|
||||||
var selectedFieldType = inputField.val(); |
|
||||||
var choiceFields = ['checkbox_multiple', 'select', 'radio', 'file']; |
|
||||||
var showChoiceField = $.inArray(selectedFieldType, choiceFields) >= 0; |
|
||||||
that.find('.field-choice_values') |
|
||||||
.toggle(showChoiceField) |
|
||||||
.toggleClass('required', showChoiceField); |
|
||||||
|
|
||||||
that.find('.field-placeholder_text, .field-help_text, .field-choice_values:not(:hidden)') |
|
||||||
.toggle(selectedFieldType != 'hidden') |
|
||||||
|
|
||||||
}; |
|
||||||
inputField.change(function() { |
|
||||||
toggleField(); |
|
||||||
}); |
|
||||||
toggleField(); |
|
||||||
}) |
|
||||||
}; |
|
||||||
|
|
||||||
init(); |
|
||||||
|
|
||||||
// init again when "Add another" link is clicked
|
|
||||||
$('.add-row a').click(function() { |
|
||||||
init(); |
|
||||||
}) |
|
||||||
}); |
|
||||||
@ -1,109 +0,0 @@ |
|||||||
(function ($) { |
|
||||||
$.fn.djangocms_forms = function (options) { |
|
||||||
if (options === undefined) { options = {}; } |
|
||||||
|
|
||||||
var defaults = { |
|
||||||
form_wrapper: '.form-wrapper', |
|
||||||
field_wrapper: '.field-wrapper', |
|
||||||
form_errors: '.form-errors', |
|
||||||
field_errors: '.field-errors', |
|
||||||
form_success: '.form-success', |
|
||||||
errorlist_css_class: 'errorlist', |
|
||||||
error_css_class: 'error', |
|
||||||
server_error: 'We\'re sorry. Something Unexpected Happened. Please Try Again Later.' |
|
||||||
}; |
|
||||||
|
|
||||||
$('input[type=tel]').inputmask("+7 999 999-99-99"); |
|
||||||
|
|
||||||
if(typeof consultation != "undefined") { |
|
||||||
$('input[name=sotrudnik]').val(consultation.name); |
|
||||||
} |
|
||||||
|
|
||||||
this.each(function(options) { |
|
||||||
var options = $.extend( {}, defaults, options) ; |
|
||||||
|
|
||||||
var el = $(this), |
|
||||||
form_wrapper = $(options.form_wrapper, el), |
|
||||||
form_success = $(options.form_success, el), |
|
||||||
form = $('form', form_wrapper); |
|
||||||
|
|
||||||
|
|
||||||
function clearErrors() { |
|
||||||
form.find(options.form_errors).fadeOut().empty(); //clear form errors
|
|
||||||
form.find(options.field_errors).fadeOut().empty(); //clear field errors
|
|
||||||
form.find(options.field_wrapper).removeClass(options.error_css_class); //remove error classes
|
|
||||||
} |
|
||||||
|
|
||||||
// post-submit callback
|
|
||||||
function ajaxSuccess(response) { |
|
||||||
if (response.status == 'success'){ |
|
||||||
formValid(response.redirect_url); |
|
||||||
} |
|
||||||
else if (response.status == 'error'){ |
|
||||||
formInvalid(response.form_errors); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
function formValid(success_url) { |
|
||||||
form_success.fadeIn('slow'); |
|
||||||
form_wrapper.slideUp('slow').remove(); |
|
||||||
|
|
||||||
if (success_url){ |
|
||||||
setTimeout(function(){ |
|
||||||
window.location = success_url; |
|
||||||
}, 1000); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
function formInvalid(form_errors) { |
|
||||||
clearErrors() |
|
||||||
$.each(form_errors, function(key, value) { |
|
||||||
var field = form.find(':input[name=' + key + ']').first(); |
|
||||||
var field_wrapper = field.parents(options.field_wrapper).addClass(options.error_css_class); |
|
||||||
var field_error = $('<ul/>').addClass(options.errorlist_css_class); |
|
||||||
$.each(value, function(key, value) { |
|
||||||
$('<li>', { |
|
||||||
text: value |
|
||||||
}).appendTo(field_error); |
|
||||||
}); |
|
||||||
field_wrapper.find(options.field_errors).append(field_error).fadeIn('slow') |
|
||||||
}); |
|
||||||
if (form_errors.__all__) { |
|
||||||
var form_error = $('<ul/>').addClass(options.errorlist_css_class); |
|
||||||
$.each(form_errors.__all__, function(key, value) { |
|
||||||
$('<li>', { |
|
||||||
text: value |
|
||||||
}).appendTo(form_error); |
|
||||||
}); |
|
||||||
form.find(options.form_errors).append(form_error).fadeIn('slow'); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
function ajaxError() { |
|
||||||
clearErrors(); |
|
||||||
var form_error = $('<ul/>').addClass(options.error_class); |
|
||||||
$('<li>', { |
|
||||||
html: options.server_error |
|
||||||
}).appendTo(form_error); |
|
||||||
form.find(options.form_errors).append(form_error).fadeIn('slow'); |
|
||||||
} |
|
||||||
|
|
||||||
// attach handler to form's submit event
|
|
||||||
form.submit(function () { |
|
||||||
var ajaxOptions = { |
|
||||||
type: 'POST', |
|
||||||
success: ajaxSuccess, |
|
||||||
error: ajaxError |
|
||||||
}; |
|
||||||
// submit the form
|
|
||||||
$(this).ajaxSubmit(ajaxOptions); |
|
||||||
|
|
||||||
form.find('button[type="submit"]').attr('disabled','disabled'); |
|
||||||
|
|
||||||
// return false to prevent normal browser submit and page navigation
|
|
||||||
return false; |
|
||||||
}); |
|
||||||
}); |
|
||||||
}; |
|
||||||
})(jQuery); |
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,139 +0,0 @@ |
|||||||
0 info it worked if it ends with ok |
|
||||||
1 verbose cli [ 'node', '/usr/local/bin/npm', '-g', 'install', 'yuglify' ] |
|
||||||
2 info using npm@1.4.28 |
|
||||||
3 info using node@v0.10.33 |
|
||||||
4 verbose cache add [ 'yuglify', null ] |
|
||||||
5 verbose cache add name=undefined spec="yuglify" args=["yuglify",null] |
|
||||||
6 verbose parsed url { protocol: null, |
|
||||||
6 verbose parsed url slashes: null, |
|
||||||
6 verbose parsed url auth: null, |
|
||||||
6 verbose parsed url host: null, |
|
||||||
6 verbose parsed url port: null, |
|
||||||
6 verbose parsed url hostname: null, |
|
||||||
6 verbose parsed url hash: null, |
|
||||||
6 verbose parsed url search: null, |
|
||||||
6 verbose parsed url query: null, |
|
||||||
6 verbose parsed url pathname: 'yuglify', |
|
||||||
6 verbose parsed url path: 'yuglify', |
|
||||||
6 verbose parsed url href: 'yuglify' } |
|
||||||
7 silly lockFile a15791f5-yuglify yuglify |
|
||||||
8 verbose lock yuglify /Users/fefa4ka/.npm/a15791f5-yuglify.lock |
|
||||||
9 silly lockFile a15791f5-yuglify yuglify |
|
||||||
10 silly lockFile a15791f5-yuglify yuglify |
|
||||||
11 verbose addNamed [ 'yuglify', '' ] |
|
||||||
12 verbose addNamed [ null, '*' ] |
|
||||||
13 silly lockFile e77d10d2-yuglify yuglify@ |
|
||||||
14 verbose lock yuglify@ /Users/fefa4ka/.npm/e77d10d2-yuglify.lock |
|
||||||
15 silly addNameRange { name: 'yuglify', range: '*', hasData: false } |
|
||||||
16 verbose request where is /yuglify |
|
||||||
17 verbose request registry https://registry.npmjs.org/ |
|
||||||
18 verbose request id b64ae15ba0fed38b |
|
||||||
19 verbose url raw /yuglify |
|
||||||
20 verbose url resolving [ 'https://registry.npmjs.org/', './yuglify' ] |
|
||||||
21 verbose url resolved https://registry.npmjs.org/yuglify |
|
||||||
22 verbose request where is https://registry.npmjs.org/yuglify |
|
||||||
23 info trying registry request attempt 1 at 20:59:19 |
|
||||||
24 http GET https://registry.npmjs.org/yuglify |
|
||||||
25 http 200 https://registry.npmjs.org/yuglify |
|
||||||
26 silly registry.get cb [ 200, |
|
||||||
26 silly registry.get { server: 'CouchDB/1.5.0 (Erlang OTP/R16B03)', |
|
||||||
26 silly registry.get etag: '"6EX7Y8ZUNLQGJO6A3BVILGV17"', |
|
||||||
26 silly registry.get 'content-type': 'application/json', |
|
||||||
26 silly registry.get 'cache-control': 'max-age=60', |
|
||||||
26 silly registry.get 'content-length': '23910', |
|
||||||
26 silly registry.get 'accept-ranges': 'bytes', |
|
||||||
26 silly registry.get date: 'Sun, 02 Aug 2015 17:59:19 GMT', |
|
||||||
26 silly registry.get via: '1.1 varnish', |
|
||||||
26 silly registry.get age: '0', |
|
||||||
26 silly registry.get connection: 'keep-alive', |
|
||||||
26 silly registry.get 'x-served-by': 'cache-fra1243-FRA', |
|
||||||
26 silly registry.get 'x-cache': 'HIT', |
|
||||||
26 silly registry.get 'x-cache-hits': '1', |
|
||||||
26 silly registry.get 'x-timer': 'S1438538359.464688,VS0,VE483', |
|
||||||
26 silly registry.get vary: 'Accept' } ] |
|
||||||
27 silly addNameRange number 2 { name: 'yuglify', range: '*', hasData: true } |
|
||||||
28 silly addNameRange versions [ 'yuglify', |
|
||||||
28 silly addNameRange [ '0.0.1', '0.1.0', '0.1.1', '0.1.2', '0.1.3', '0.1.4' ] ] |
|
||||||
29 verbose addNamed [ 'yuglify', '0.1.4' ] |
|
||||||
30 verbose addNamed [ '0.1.4', '0.1.4' ] |
|
||||||
31 silly lockFile 2278936e-yuglify-0-1-4 yuglify@0.1.4 |
|
||||||
32 verbose lock yuglify@0.1.4 /Users/fefa4ka/.npm/2278936e-yuglify-0-1-4.lock |
|
||||||
33 silly lockFile 677ad253-js-org-yuglify-yuglify-0-1-4-tgz https://registry.npmjs.org/yuglify/-/yuglify-0.1.4.tgz |
|
||||||
34 verbose lock https://registry.npmjs.org/yuglify/-/yuglify-0.1.4.tgz /Users/fefa4ka/.npm/677ad253-js-org-yuglify-yuglify-0-1-4-tgz.lock |
|
||||||
35 verbose addRemoteTarball [ 'https://registry.npmjs.org/yuglify/-/yuglify-0.1.4.tgz', |
|
||||||
35 verbose addRemoteTarball '726d5e4af810f741ef21865f6f954c4078a3a45f' ] |
|
||||||
36 info retry fetch attempt 1 at 20:59:20 |
|
||||||
37 verbose fetch to= /var/folders/cs/sr52sk7s1yd855sf_12mn6dxl770mb/T/npm-72095-pywUKB2P/registry.npmjs.org/yuglify/-/yuglify-0.1.4.tgz |
|
||||||
38 http GET https://registry.npmjs.org/yuglify/-/yuglify-0.1.4.tgz |
|
||||||
39 http 200 https://registry.npmjs.org/yuglify/-/yuglify-0.1.4.tgz |
|
||||||
40 silly lockFile 677ad253-js-org-yuglify-yuglify-0-1-4-tgz https://registry.npmjs.org/yuglify/-/yuglify-0.1.4.tgz |
|
||||||
41 silly lockFile 677ad253-js-org-yuglify-yuglify-0-1-4-tgz https://registry.npmjs.org/yuglify/-/yuglify-0.1.4.tgz |
|
||||||
42 silly lockFile 2278936e-yuglify-0-1-4 yuglify@0.1.4 |
|
||||||
43 silly lockFile 2278936e-yuglify-0-1-4 yuglify@0.1.4 |
|
||||||
44 silly lockFile e77d10d2-yuglify yuglify@ |
|
||||||
45 silly lockFile e77d10d2-yuglify yuglify@ |
|
||||||
46 silly resolved [ { name: 'yuglify', |
|
||||||
46 silly resolved description: 'cli wrapper for uglify and cssmin used by YUI', |
|
||||||
46 silly resolved version: '0.1.4', |
|
||||||
46 silly resolved dependencies: { 'uglify-js': '~1.3.4', ycssmin: '~1.0.1', nopt: '~2.1.1' }, |
|
||||||
46 silly resolved devDependencies: { 'yui-lint': '~0.1.1', jshint: '~0.9.0', vows: '*' }, |
|
||||||
46 silly resolved main: './lib/index.js', |
|
||||||
46 silly resolved bin: { yuglify: './bin/yuglify' }, |
|
||||||
46 silly resolved scripts: |
|
||||||
46 silly resolved { pretest: 'jshint --config ./node_modules/yui-lint/jshint.json ./lib/*.js ./bin/yuglify', |
|
||||||
46 silly resolved test: 'vows --spec ./tests/*.js' }, |
|
||||||
46 silly resolved preferGlobal: 'true', |
|
||||||
46 silly resolved bugs: { url: 'http://github.com/yui/yuglify/issues' }, |
|
||||||
46 silly resolved licenses: [ [Object] ], |
|
||||||
46 silly resolved repository: { type: 'git', url: 'http://github.com/yui/yuglify.git' }, |
|
||||||
46 silly resolved readme: 'yUglify\n=======\n\n`yuglify` is a wrapper around [UglifyJS](https://github.com/mishoo/UglifyJS) and [cssmin](https://github.com/jbleuzen/node-cssmin)\nwith the default YUI configurations on each of them.\n\n\nBuild Status\n------------\n\n[](http://travis-ci.org/yui/yuglify)\n\n\nCLI Usage\n----------\n\n npm -g install yuglify\n\n`yuglify` has a very simple CLI interface to allow you to compress files from the command line.\n\n yuglify ./lib/*.js #uses shell globbing, won\'t work on Windows\n\nThis will read all passed files and compress them (js or css) and write them back beside the original\nwith the name altered to `-min.js|css`.\n\nRequired\n--------\n\n npm install yuglify\n\n\n```javascript\n\nvar yuglify = require(\'yuglify\');\n\nyuglify.jsmin(\'<string of source\', function(err, smashed) {\n fs.writeFile(\'/path/to/file\', smashed, \'utf8\', function() {});\n});\n\nyuglify.cssmin(\'<string of source\', function(err, smashed) {\n fs.writeFile(\'/path/to/file\', smashed, \'utf8\', function() {});\n});\n\n```\n\nPurpose\n-------\n\nThis module is primarily designed to be used inside [shifter](http://yui.github.com/shifter/).\n\nWhy not use the default Uglify?\n-------------------------------\n\nWe need to support the `/*!` license comment blocks when minifying, so we added\na preprocessor to the code to pull them from the source, then place them back when\nthe minification is complete.\n\nWe also needed to make sure that the file ends in a clean line ending for our\ncombo servers. This way we ensure that other modules don\'t have to end with a\nsemi-colon and the combohandler doesn\'t concat them together in a bad way.\n\nWe\'ve also added support to add a semi-colon if the last character of the\nminified source is either a `)` or a `}`.\n\nThe last thing this module does is provide the default config that we think\nis the most compatible with the way that YUI Compressor used to minify our\nfiles.\n\n```javascript\n{\n mangle: true,\n squeeze: true,\n semicolon: false,\n lift_vars: false,\n mangle_toplevel: true,\n no_mangle_functions: true,\n max_line_length: 6000\n}\n```\n\nTesting\n-------\n\nCurrently, the tests for this module are just to make sure that they are exported properly.\nShifter\'s test suite validates that these compressors are working as expected. Soon, we\'ll\nmove them over to this repo too.\n', |
|
||||||
46 silly resolved readmeFilename: 'README.md', |
|
||||||
46 silly resolved _id: 'yuglify@0.1.4', |
|
||||||
46 silly resolved dist: |
|
||||||
46 silly resolved { shasum: '726d5e4af810f741ef21865f6f954c4078a3a45f', |
|
||||||
46 silly resolved tarball: 'http://registry.npmjs.org/yuglify/-/yuglify-0.1.4.tgz' }, |
|
||||||
46 silly resolved _from: 'yuglify@', |
|
||||||
46 silly resolved _npmVersion: '1.2.15', |
|
||||||
46 silly resolved _npmUser: { name: 'davglass', email: 'davglass@gmail.com' }, |
|
||||||
46 silly resolved maintainers: [ [Object] ], |
|
||||||
46 silly resolved directories: {}, |
|
||||||
46 silly resolved _shasum: '726d5e4af810f741ef21865f6f954c4078a3a45f', |
|
||||||
46 silly resolved _resolved: 'https://registry.npmjs.org/yuglify/-/yuglify-0.1.4.tgz' } ] |
|
||||||
47 info install yuglify@0.1.4 into /usr/local/lib |
|
||||||
48 info installOne yuglify@0.1.4 |
|
||||||
49 verbose lib/node_modules/yuglify unbuild |
|
||||||
50 verbose tar unpack /Users/fefa4ka/.npm/yuglify/0.1.4/package.tgz |
|
||||||
51 silly lockFile f8b66cbf-r-local-lib-node-modules-yuglify tar:///usr/local/lib/node_modules/yuglify |
|
||||||
52 verbose lock tar:///usr/local/lib/node_modules/yuglify /Users/fefa4ka/.npm/f8b66cbf-r-local-lib-node-modules-yuglify.lock |
|
||||||
53 silly lockFile 4ba9cf88-ka-npm-yuglify-0-1-4-package-tgz tar:///Users/fefa4ka/.npm/yuglify/0.1.4/package.tgz |
|
||||||
54 verbose lock tar:///Users/fefa4ka/.npm/yuglify/0.1.4/package.tgz /Users/fefa4ka/.npm/4ba9cf88-ka-npm-yuglify-0-1-4-package-tgz.lock |
|
||||||
55 silly gunzTarPerm modes [ '755', '644' ] |
|
||||||
56 error Error: EACCES, mkdir '/usr/local/lib/node_modules/yuglify' |
|
||||||
56 error { [Error: EACCES, mkdir '/usr/local/lib/node_modules/yuglify'] |
|
||||||
56 error errno: 3, |
|
||||||
56 error code: 'EACCES', |
|
||||||
56 error path: '/usr/local/lib/node_modules/yuglify', |
|
||||||
56 error fstream_type: 'Directory', |
|
||||||
56 error fstream_path: '/usr/local/lib/node_modules/yuglify', |
|
||||||
56 error fstream_class: 'DirWriter', |
|
||||||
56 error fstream_stack: |
|
||||||
56 error [ '/usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:36:23', |
|
||||||
56 error '/usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:46:53', |
|
||||||
56 error 'Object.oncomplete (fs.js:107:15)' ] } |
|
||||||
57 error Please try running this command again as root/Administrator. |
|
||||||
58 error System Darwin 14.0.0 |
|
||||||
59 error command "node" "/usr/local/bin/npm" "-g" "install" "yuglify" |
|
||||||
60 error cwd /Users/fefa4ka/Documents/web/zuykov |
|
||||||
61 error node -v v0.10.33 |
|
||||||
62 error npm -v 1.4.28 |
|
||||||
63 error path /usr/local/lib/node_modules/yuglify |
|
||||||
64 error fstream_path /usr/local/lib/node_modules/yuglify |
|
||||||
65 error fstream_type Directory |
|
||||||
66 error fstream_class DirWriter |
|
||||||
67 error code EACCES |
|
||||||
68 error errno 3 |
|
||||||
69 error stack Error: EACCES, mkdir '/usr/local/lib/node_modules/yuglify' |
|
||||||
70 error fstream_stack /usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:36:23 |
|
||||||
70 error fstream_stack /usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:46:53 |
|
||||||
70 error fstream_stack Object.oncomplete (fs.js:107:15) |
|
||||||
71 verbose exit [ 3, true ] |
|
||||||
@ -0,0 +1,2 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
__version__ = '0.5.2' |
||||||
@ -0,0 +1,3 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
|
||||||
|
from .models_admin import GroupAdmin, PersonAdmin # flake8: noqa |
||||||
@ -0,0 +1,42 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
|
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.conf import settings |
||||||
|
from django.core.urlresolvers import reverse |
||||||
|
|
||||||
|
from cms.utils.i18n import get_current_language |
||||||
|
|
||||||
|
|
||||||
|
class AllTranslationsAdminMixin(object): |
||||||
|
"""To use this, apply this mixin to your Admin class, then add |
||||||
|
'all_translations' to your list_display list.""" |
||||||
|
|
||||||
|
def all_translations(self, obj): |
||||||
|
"""This is an adapter for the functionality that was in HVAD but not |
||||||
|
in Parler. |
||||||
|
""" |
||||||
|
available = list(obj.get_available_languages()) |
||||||
|
langs = [] |
||||||
|
for lang, _ in settings.LANGUAGES: |
||||||
|
if lang in available: |
||||||
|
langs.append(lang) |
||||||
|
available.remove(lang) |
||||||
|
langs += available |
||||||
|
for idx, lang in enumerate(langs): |
||||||
|
change_form_url = reverse( |
||||||
|
'admin:{app_label}_{model_name}_change'.format( |
||||||
|
app_label=obj._meta.app_label.lower(), |
||||||
|
model_name=obj.__class__.__name__.lower(), |
||||||
|
), args=(obj.id, ) |
||||||
|
) |
||||||
|
link = '<a href="{url}?language={lang}">{lang}</a>'.format( |
||||||
|
url=change_form_url, |
||||||
|
lang=lang, |
||||||
|
) |
||||||
|
if lang == get_current_language(): |
||||||
|
link = "<strong>{0}</strong>".format(link) |
||||||
|
langs[idx] = link |
||||||
|
return ', '.join(langs) |
||||||
|
all_translations.short_description = 'available translations' |
||||||
|
all_translations.allow_tags = True |
||||||
@ -0,0 +1,64 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
|
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.contrib import admin |
||||||
|
from django.utils.translation import ugettext_lazy as _ |
||||||
|
|
||||||
|
from parler.admin import TranslatableAdmin |
||||||
|
|
||||||
|
from ..models import Person, Group |
||||||
|
from ..forms import PersonForm |
||||||
|
|
||||||
|
from .base import AllTranslationsAdminMixin |
||||||
|
|
||||||
|
|
||||||
|
class PersonAdmin(AllTranslationsAdminMixin, TranslatableAdmin): |
||||||
|
|
||||||
|
list_display = [ |
||||||
|
'__str__', 'email', 'vcard_enabled', 'all_translations'] |
||||||
|
list_filter = ['group', 'vcard_enabled'] |
||||||
|
search_fields = ('name', 'email', 'translations__function') |
||||||
|
raw_id_fields = ('user',) |
||||||
|
|
||||||
|
fieldsets = ( |
||||||
|
(None, { |
||||||
|
'fields': ( |
||||||
|
'name', 'function', 'slug', 'visual', 'visual_portrait', 'vcard_enabled' |
||||||
|
), |
||||||
|
}), |
||||||
|
(_('Contact'), { |
||||||
|
'fields': ( |
||||||
|
'phone', 'mobile', 'fax', 'email', 'website', 'user' |
||||||
|
), |
||||||
|
}), |
||||||
|
(None, { |
||||||
|
'fields': ( |
||||||
|
'group', 'description', |
||||||
|
), |
||||||
|
}), |
||||||
|
) |
||||||
|
|
||||||
|
form = PersonForm |
||||||
|
|
||||||
|
|
||||||
|
class GroupAdmin(AllTranslationsAdminMixin, TranslatableAdmin): |
||||||
|
|
||||||
|
list_display = ['__str__', 'city', 'all_translations'] |
||||||
|
search_filter = ['name'] |
||||||
|
|
||||||
|
fieldsets = ( |
||||||
|
(None, { |
||||||
|
'fields': ( |
||||||
|
'name', 'description', 'phone', 'fax', 'email', 'website' |
||||||
|
), |
||||||
|
}), |
||||||
|
(_('Address'), { |
||||||
|
'fields': ( |
||||||
|
'address', 'postal_code', 'city' |
||||||
|
), |
||||||
|
}), |
||||||
|
) |
||||||
|
|
||||||
|
admin.site.register(Person, PersonAdmin) |
||||||
|
admin.site.register(Group, GroupAdmin) |
||||||
@ -0,0 +1,17 @@ |
|||||||
|
{% load aldryn_people_tags i18n thumbnail %} |
||||||
|
|
||||||
|
<div class="people-item"> |
||||||
|
<h2>{{ person.name }} <span>{{ person.function }}</span></h2> |
||||||
|
{% if person.visual %}<p class="people-visual"> |
||||||
|
{% if instance.show_links %}<a href="{{ person.get_absolute_url }}">{% endif %} |
||||||
|
<img src="{% thumbnail person.visual 200x100 crop subject_location=person.visual.subject_location %}" alt="{{ person.name }}" /> |
||||||
|
{% if instance.show_links %}</a>{% endif %} |
||||||
|
</p>{% endif %} |
||||||
|
<p class="people-meta"> |
||||||
|
{% if person.phone %}{% trans "Phone:" %} <span>{{ person.phone|phoneformat }}</span><br />{% endif %} |
||||||
|
{% if person.mobile %}{% trans "Mobile:" %} <span>{{ person.mobile|phoneformat }}</span><br />{% endif %} |
||||||
|
{% if person.email %}{% trans "E-Mail:" %} <a href="mailto:{{ person.email }}">{{ person.email }}</a>{% endif %} |
||||||
|
{% if instance.show_vcard and person.vcard_enabled %}<br /><a href="{% url 'download_vcard' person.slug %}" class="btn-download">{% trans "Download vCard" %}</a>{% endif %} |
||||||
|
</p> |
||||||
|
{% if person.description %}<div class="people-desc">{{ person.description|safe }}</div>{% endif %} |
||||||
|
</div> |
||||||
@ -0,0 +1,7 @@ |
|||||||
|
{% load i18n thumbnail %} |
||||||
|
|
||||||
|
<ul class="people-items"> |
||||||
|
{% for person in people %} |
||||||
|
<li>{% include "aldryn_people/includes/people_item.html" with person=person %}</li> |
||||||
|
{% endfor %} |
||||||
|
</ul> |
||||||
@ -0,0 +1,9 @@ |
|||||||
|
{% extends "base.html" %} |
||||||
|
|
||||||
|
{% block content %} |
||||||
|
<div class="plugin plugin-people"> |
||||||
|
<div class="people-detail"> |
||||||
|
{% include "aldryn_people/includes/people_item.html" with person=person %} |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{% endblock content %} |
||||||
@ -0,0 +1,27 @@ |
|||||||
|
{% load i18n thumbnail %} |
||||||
|
|
||||||
|
<div class="plugin plugin-people"> |
||||||
|
{% if people_groups %} |
||||||
|
{# Because of hvad I have to activate the plugin's language :( #} |
||||||
|
{% language instance.language %} |
||||||
|
{% for group, people_list in people_groups.items %} |
||||||
|
{% if group.name %} |
||||||
|
<div class="people-group"> |
||||||
|
<h2>{{ group.name }}</h2> |
||||||
|
<div class="people-lead">{{ group.description|safe }}</div> |
||||||
|
<p class="people-desc"> |
||||||
|
{% if group.phone %}{% trans "Phone:" %} <span>{{ group.phone }}</span><br />{% endif %} |
||||||
|
{% trans "Address:" %} |
||||||
|
<span>{{ group.address }}</span> |
||||||
|
</p> |
||||||
|
</div> |
||||||
|
{% endif %} |
||||||
|
{% include "aldryn_people/includes/people_items.html" with people=people_list %} |
||||||
|
{% endfor %} |
||||||
|
{% endlanguage %} |
||||||
|
{% endif %} |
||||||
|
|
||||||
|
{% if not people_groups %} |
||||||
|
{% include "aldryn_people/includes/people_items.html" %} |
||||||
|
{% endif %} |
||||||
|
</div> |
||||||
@ -0,0 +1,27 @@ |
|||||||
|
{% load i18n thumbnail %} |
||||||
|
|
||||||
|
<div class="plugin plugin-people"> |
||||||
|
{% if people_groups %} |
||||||
|
{# Because of hvad I have to activate the plugin's language :( #} |
||||||
|
{% language instance.language %} |
||||||
|
{% for group, people_list in people_groups.items %} |
||||||
|
{% if group.name %} |
||||||
|
<div class="people-group"> |
||||||
|
<h2>{{ group.name }}</h2> |
||||||
|
<div class="people-lead">{{ group.description|safe }}</div> |
||||||
|
<p class="people-desc"> |
||||||
|
{% if group.phone %}{% trans "Phone:" %} <span>{{ group.phone }}</span><br />{% endif %} |
||||||
|
{% trans "Address:" %} |
||||||
|
<span>{{ group.address }}</span> |
||||||
|
</p> |
||||||
|
</div> |
||||||
|
{% endif %} |
||||||
|
{% include "aldryn_people/includes/people_items.html" with people=people_list %} |
||||||
|
{% endfor %} |
||||||
|
{% endlanguage %} |
||||||
|
{% endif %} |
||||||
|
|
||||||
|
{% if not people_groups %} |
||||||
|
{% include "aldryn_people/includes/people_items.html" %} |
||||||
|
{% endif %} |
||||||
|
</div> |
||||||
@ -0,0 +1,27 @@ |
|||||||
|
{% load i18n thumbnail %} |
||||||
|
|
||||||
|
<div class="plugin plugin-people"> |
||||||
|
{% if people_groups %} |
||||||
|
{# Because of hvad I have to activate the plugin's language :( #} |
||||||
|
{% language instance.language %} |
||||||
|
{% for group, people_list in people_groups.items %} |
||||||
|
{% if group.name %} |
||||||
|
<div class="people-group"> |
||||||
|
<h2>{{ group.name }}</h2> |
||||||
|
<div class="people-lead">{{ group.description|safe }}</div> |
||||||
|
<p class="people-desc"> |
||||||
|
{% if group.phone %}{% trans "Phone:" %} <span>{{ group.phone }}</span><br />{% endif %} |
||||||
|
{% trans "Address:" %} |
||||||
|
<span>{{ group.address }}</span> |
||||||
|
</p> |
||||||
|
</div> |
||||||
|
{% endif %} |
||||||
|
{% include "aldryn_people/includes/people_items.html" with people=people_list %} |
||||||
|
{% endfor %} |
||||||
|
{% endlanguage %} |
||||||
|
{% endif %} |
||||||
|
|
||||||
|
{% if not people_groups %} |
||||||
|
{% include "aldryn_people/includes/people_items.html" %} |
||||||
|
{% endif %} |
||||||
|
</div> |
||||||
@ -0,0 +1,17 @@ |
|||||||
|
{% load aldryn_people_tags i18n thumbnail %} |
||||||
|
|
||||||
|
<div class="people-item"> |
||||||
|
<h2>{{ person.name }} <span>{{ person.function }}</span></h2> |
||||||
|
{% if person.visual %}<p class="people-visual"> |
||||||
|
{% if instance.show_links %}<a href="{{ person.get_absolute_url }}">{% endif %} |
||||||
|
<img src="{% thumbnail person.visual 200x100 crop subject_location=person.visual.subject_location %}" alt="{{ person.name }}" /> |
||||||
|
{% if instance.show_links %}</a>{% endif %} |
||||||
|
</p>{% endif %} |
||||||
|
<p class="people-meta"> |
||||||
|
{% if person.phone %}{% trans "Phone:" %} <span>{{ person.phone|phoneformat }}</span><br />{% endif %} |
||||||
|
{% if person.mobile %}{% trans "Mobile:" %} <span>{{ person.mobile|phoneformat }}</span><br />{% endif %} |
||||||
|
{% if person.email %}{% trans "E-Mail:" %} <a href="mailto:{{ person.email }}">{{ person.email }}</a>{% endif %} |
||||||
|
{% if instance.show_vcard and person.vcard_enabled %}<br /><a href="{% url 'download_vcard' person.slug %}" class="btn-download">{% trans "Download vCard" %}</a>{% endif %} |
||||||
|
</p> |
||||||
|
{% if person.description %}<div class="people-desc">{{ person.description|safe }}</div>{% endif %} |
||||||
|
</div> |
||||||
@ -0,0 +1,7 @@ |
|||||||
|
{% load i18n thumbnail %} |
||||||
|
|
||||||
|
<ul class="people-items"> |
||||||
|
{% for person in people %} |
||||||
|
<li>{% include "aldryn_people/includes/people_item.html" with person=person %}</li> |
||||||
|
{% endfor %} |
||||||
|
</ul> |
||||||
@ -0,0 +1,9 @@ |
|||||||
|
{% extends "base.html" %} |
||||||
|
|
||||||
|
{% block content %} |
||||||
|
<div class="plugin plugin-people"> |
||||||
|
<div class="people-detail"> |
||||||
|
{% include "aldryn_people/includes/people_item.html" with person=person %} |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{% endblock content %} |
||||||
@ -0,0 +1,27 @@ |
|||||||
|
{% load i18n thumbnail %} |
||||||
|
|
||||||
|
<div class="plugin plugin-people"> |
||||||
|
{% if people_groups %} |
||||||
|
{# Because of hvad I have to activate the plugin's language :( #} |
||||||
|
{% language instance.language %} |
||||||
|
{% for group, people_list in people_groups.items %} |
||||||
|
{% if group.name %} |
||||||
|
<div class="people-group"> |
||||||
|
<h2>{{ group.name }}</h2> |
||||||
|
<div class="people-lead">{{ group.description|safe }}</div> |
||||||
|
<p class="people-desc"> |
||||||
|
{% if group.phone %}{% trans "Phone:" %} <span>{{ group.phone }}</span><br />{% endif %} |
||||||
|
{% trans "Address:" %} |
||||||
|
<span>{{ group.address }}</span> |
||||||
|
</p> |
||||||
|
</div> |
||||||
|
{% endif %} |
||||||
|
{% include "aldryn_people/includes/people_items.html" with people=people_list %} |
||||||
|
{% endfor %} |
||||||
|
{% endlanguage %} |
||||||
|
{% endif %} |
||||||
|
|
||||||
|
{% if not people_groups %} |
||||||
|
{% include "aldryn_people/includes/people_items.html" %} |
||||||
|
{% endif %} |
||||||
|
</div> |
||||||
@ -0,0 +1,27 @@ |
|||||||
|
{% load i18n thumbnail %} |
||||||
|
|
||||||
|
<div class="plugin plugin-people"> |
||||||
|
{% if people_groups %} |
||||||
|
{# Because of hvad I have to activate the plugin's language :( #} |
||||||
|
{% language instance.language %} |
||||||
|
{% for group, people_list in people_groups.items %} |
||||||
|
{% if group.name %} |
||||||
|
<div class="people-group"> |
||||||
|
<h2>{{ group.name }}</h2> |
||||||
|
<div class="people-lead">{{ group.description|safe }}</div> |
||||||
|
<p class="people-desc"> |
||||||
|
{% if group.phone %}{% trans "Phone:" %} <span>{{ group.phone }}</span><br />{% endif %} |
||||||
|
{% trans "Address:" %} |
||||||
|
<span>{{ group.address }}</span> |
||||||
|
</p> |
||||||
|
</div> |
||||||
|
{% endif %} |
||||||
|
{% include "aldryn_people/includes/people_items.html" with people=people_list %} |
||||||
|
{% endfor %} |
||||||
|
{% endlanguage %} |
||||||
|
{% endif %} |
||||||
|
|
||||||
|
{% if not people_groups %} |
||||||
|
{% include "aldryn_people/includes/people_items.html" %} |
||||||
|
{% endif %} |
||||||
|
</div> |
||||||
@ -0,0 +1,27 @@ |
|||||||
|
{% load i18n thumbnail %} |
||||||
|
|
||||||
|
<div class="plugin plugin-people"> |
||||||
|
{% if people_groups %} |
||||||
|
{# Because of hvad I have to activate the plugin's language :( #} |
||||||
|
{% language instance.language %} |
||||||
|
{% for group, people_list in people_groups.items %} |
||||||
|
{% if group.name %} |
||||||
|
<div class="people-group"> |
||||||
|
<h2>{{ group.name }}</h2> |
||||||
|
<div class="people-lead">{{ group.description|safe }}</div> |
||||||
|
<p class="people-desc"> |
||||||
|
{% if group.phone %}{% trans "Phone:" %} <span>{{ group.phone }}</span><br />{% endif %} |
||||||
|
{% trans "Address:" %} |
||||||
|
<span>{{ group.address }}</span> |
||||||
|
</p> |
||||||
|
</div> |
||||||
|
{% endif %} |
||||||
|
{% include "aldryn_people/includes/people_items.html" with people=people_list %} |
||||||
|
{% endfor %} |
||||||
|
{% endlanguage %} |
||||||
|
{% endif %} |
||||||
|
|
||||||
|
{% if not people_groups %} |
||||||
|
{% include "aldryn_people/includes/people_items.html" %} |
||||||
|
{% endif %} |
||||||
|
</div> |
||||||
@ -0,0 +1,16 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
|
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.utils.translation import ugettext_lazy as _ |
||||||
|
|
||||||
|
from cms.app_base import CMSApp |
||||||
|
from cms.apphook_pool import apphook_pool |
||||||
|
|
||||||
|
|
||||||
|
class PeopleApp(CMSApp): |
||||||
|
name = _('People') |
||||||
|
urls = ['aldryn_people.urls'] |
||||||
|
app_name = 'aldryn_people' |
||||||
|
|
||||||
|
apphook_pool.register(PeopleApp) |
||||||
@ -0,0 +1,50 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
|
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from collections import defaultdict |
||||||
|
|
||||||
|
from django.utils.translation import ugettext_lazy as _ |
||||||
|
|
||||||
|
from cms.plugin_base import CMSPluginBase |
||||||
|
from cms.plugin_pool import plugin_pool |
||||||
|
|
||||||
|
from aldryn_people import models |
||||||
|
|
||||||
|
|
||||||
|
class PeoplePlugin(CMSPluginBase): |
||||||
|
|
||||||
|
TEMPLATE_NAME = 'aldryn_people/plugins/%s/people_list.html' |
||||||
|
module = 'People' |
||||||
|
render_template = TEMPLATE_NAME % models.PeoplePlugin.STYLE_CHOICES[0][0] |
||||||
|
name = _('People list') |
||||||
|
model = models.PeoplePlugin |
||||||
|
|
||||||
|
def group_people(self, people, language): |
||||||
|
groups = defaultdict(list) |
||||||
|
|
||||||
|
for people in people: |
||||||
|
groups[people.group].append(people) |
||||||
|
|
||||||
|
# Python/Django bug ? |
||||||
|
groups.default_factory = None |
||||||
|
return groups |
||||||
|
|
||||||
|
def render(self, context, instance, placeholder): |
||||||
|
people = instance.get_selected_people() |
||||||
|
self.render_template = self.TEMPLATE_NAME % instance.style |
||||||
|
|
||||||
|
context['instance'] = instance |
||||||
|
context['people'] = people |
||||||
|
|
||||||
|
if (models.Group.objects.filter(person__in=people).exists() and |
||||||
|
instance.group_by_group): |
||||||
|
context['people_groups'] = self.group_people( |
||||||
|
people, instance.language) |
||||||
|
context['group_less_people'] = people.filter(group__isnull=True) |
||||||
|
else: |
||||||
|
context['people_groups'] = [] |
||||||
|
context['group_less_people'] = [] |
||||||
|
return context |
||||||
|
|
||||||
|
plugin_pool.register_plugin(PeoplePlugin) |
||||||
@ -0,0 +1,30 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
|
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from parler.forms import TranslatableModelForm |
||||||
|
|
||||||
|
from .models import Person |
||||||
|
|
||||||
|
|
||||||
|
class PersonForm(TranslatableModelForm): |
||||||
|
class Meta: |
||||||
|
model = Person |
||||||
|
fields = [ |
||||||
|
'description', |
||||||
|
'email', |
||||||
|
'fax', |
||||||
|
'function', |
||||||
|
'group', |
||||||
|
'mobile', |
||||||
|
'name', |
||||||
|
'phone', |
||||||
|
'slug', |
||||||
|
'user', |
||||||
|
'vcard_enabled', |
||||||
|
'visual', |
||||||
|
'website', |
||||||
|
] |
||||||
|
|
||||||
|
def clean_slug(self): |
||||||
|
return self.cleaned_data['slug'] or None |
||||||
@ -0,0 +1,119 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import models, migrations |
||||||
|
import django.db.models.deletion |
||||||
|
import djangocms_text_ckeditor.fields |
||||||
|
import filer.fields.image |
||||||
|
from django.conf import settings |
||||||
|
import sortedm2m.fields |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('cms', '0003_auto_20140926_2347'), |
||||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL), |
||||||
|
('filer', '__first__'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.CreateModel( |
||||||
|
name='Group', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), |
||||||
|
('address', models.TextField(verbose_name='address', blank=True)), |
||||||
|
('postal_code', models.CharField(max_length=20, verbose_name='postal code', blank=True)), |
||||||
|
('city', models.CharField(max_length=255, verbose_name='city', blank=True)), |
||||||
|
('phone', models.CharField(max_length=100, null=True, verbose_name='phone', blank=True)), |
||||||
|
('fax', models.CharField(max_length=100, null=True, verbose_name='fax', blank=True)), |
||||||
|
('email', models.EmailField(default='', max_length=75, verbose_name='email', blank=True)), |
||||||
|
('website', models.URLField(null=True, verbose_name='website', blank=True)), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Group', |
||||||
|
'verbose_name_plural': 'Groups', |
||||||
|
}, |
||||||
|
bases=(models.Model,), |
||||||
|
), |
||||||
|
migrations.CreateModel( |
||||||
|
name='GroupTranslation', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), |
||||||
|
('name', models.CharField(max_length=255, verbose_name='name')), |
||||||
|
('description', djangocms_text_ckeditor.fields.HTMLField(verbose_name='description', blank=True)), |
||||||
|
('language_code', models.CharField(max_length=15, db_index=True)), |
||||||
|
('master', models.ForeignKey(related_name='translations', editable=False, to='aldryn_people.Group', null=True)), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'abstract': False, |
||||||
|
'db_table': 'aldryn_people_group_translation', |
||||||
|
}, |
||||||
|
bases=(models.Model,), |
||||||
|
), |
||||||
|
migrations.CreateModel( |
||||||
|
name='PeoplePlugin', |
||||||
|
fields=[ |
||||||
|
('cmsplugin_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='cms.CMSPlugin')), |
||||||
|
('style', models.CharField(default='standard', max_length=50, verbose_name='Style', choices=[('standard', 'Standard'), ('feature', 'Feature')])), |
||||||
|
('group_by_group', models.BooleanField(default=True, help_text='when checked, people are grouped by their group', verbose_name='group by group')), |
||||||
|
('show_links', models.BooleanField(default=False, verbose_name='Show links to Detail Page')), |
||||||
|
('show_vcard', models.BooleanField(default=False, verbose_name='Show links to download vCard')), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'abstract': False, |
||||||
|
}, |
||||||
|
bases=('cms.cmsplugin',), |
||||||
|
), |
||||||
|
migrations.CreateModel( |
||||||
|
name='Person', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), |
||||||
|
('name', models.CharField(max_length=255, verbose_name='name')), |
||||||
|
('phone', models.CharField(max_length=100, null=True, verbose_name='phone', blank=True)), |
||||||
|
('mobile', models.CharField(max_length=100, null=True, verbose_name='mobile', blank=True)), |
||||||
|
('fax', models.CharField(max_length=100, null=True, verbose_name='fax', blank=True)), |
||||||
|
('email', models.EmailField(default='', max_length=75, verbose_name='email', blank=True)), |
||||||
|
('website', models.URLField(null=True, verbose_name='website', blank=True)), |
||||||
|
('slug', models.CharField(max_length=255, unique=True, null=True, verbose_name='unique slug', blank=True)), |
||||||
|
('vcard_enabled', models.BooleanField(default=True, verbose_name='enable vCard download')), |
||||||
|
('group', models.ForeignKey(verbose_name='group', blank=True, to='aldryn_people.Group', null=True)), |
||||||
|
('user', models.ForeignKey(null=True, blank=True, to=settings.AUTH_USER_MODEL, unique=True)), |
||||||
|
('visual', filer.fields.image.FilerImageField(on_delete=django.db.models.deletion.SET_NULL, default=None, blank=True, to='filer.Image', null=True)), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Person', |
||||||
|
'verbose_name_plural': 'People', |
||||||
|
}, |
||||||
|
bases=(models.Model,), |
||||||
|
), |
||||||
|
migrations.CreateModel( |
||||||
|
name='PersonTranslation', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), |
||||||
|
('function', models.CharField(default='', max_length=255, verbose_name='function', blank=True)), |
||||||
|
('description', djangocms_text_ckeditor.fields.HTMLField(default='', verbose_name='Description', blank=True)), |
||||||
|
('language_code', models.CharField(max_length=15, db_index=True)), |
||||||
|
('master', models.ForeignKey(related_name='translations', editable=False, to='aldryn_people.Person', null=True)), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'abstract': False, |
||||||
|
'db_table': 'aldryn_people_person_translation', |
||||||
|
}, |
||||||
|
bases=(models.Model,), |
||||||
|
), |
||||||
|
migrations.AlterUniqueTogether( |
||||||
|
name='persontranslation', |
||||||
|
unique_together=set([('language_code', 'master')]), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='peopleplugin', |
||||||
|
name='people', |
||||||
|
field=sortedm2m.fields.SortedManyToManyField(help_text=None, to='aldryn_people.Person', null=True, blank=True), |
||||||
|
preserve_default=True, |
||||||
|
), |
||||||
|
migrations.AlterUniqueTogether( |
||||||
|
name='grouptranslation', |
||||||
|
unique_together=set([('language_code', 'master')]), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,34 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import models, migrations |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('aldryn_people', '0001_initial'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterModelOptions( |
||||||
|
name='grouptranslation', |
||||||
|
options={'default_permissions': (), 'verbose_name': 'Group Translation'}, |
||||||
|
), |
||||||
|
migrations.AlterModelOptions( |
||||||
|
name='persontranslation', |
||||||
|
options={'default_permissions': (), 'verbose_name': 'Person Translation'}, |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='grouptranslation', |
||||||
|
name='language_code', |
||||||
|
field=models.CharField(db_index=True, max_length=15, verbose_name='Language', choices=[(b'en', b'English')]), |
||||||
|
preserve_default=True, |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='persontranslation', |
||||||
|
name='language_code', |
||||||
|
field=models.CharField(db_index=True, max_length=15, verbose_name='Language', choices=[(b'en', b'English')]), |
||||||
|
preserve_default=True, |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,21 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import models, migrations |
||||||
|
import aldryn_common.admin_fields.sortedm2m |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('aldryn_people', '0002_auto_20150128_1411'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterField( |
||||||
|
model_name='peopleplugin', |
||||||
|
name='people', |
||||||
|
field=aldryn_common.admin_fields.sortedm2m.SortedM2MModelField(help_text=None, to='aldryn_people.Person', null=True, blank=True), |
||||||
|
preserve_default=True, |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,34 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import models, migrations |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('aldryn_people', '0003_auto_20150425_2103'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterModelOptions( |
||||||
|
name='grouptranslation', |
||||||
|
options={'default_permissions': (), 'verbose_name': 'Group Translation', 'managed': True}, |
||||||
|
), |
||||||
|
migrations.AlterModelOptions( |
||||||
|
name='persontranslation', |
||||||
|
options={'default_permissions': (), 'verbose_name': 'Person Translation', 'managed': True}, |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='grouptranslation', |
||||||
|
name='language_code', |
||||||
|
field=models.CharField(max_length=15, verbose_name='Language', db_index=True), |
||||||
|
preserve_default=True, |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='persontranslation', |
||||||
|
name='language_code', |
||||||
|
field=models.CharField(max_length=15, verbose_name='Language', db_index=True), |
||||||
|
preserve_default=True, |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,248 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
|
||||||
|
from __future__ import unicode_literals |
||||||
|
import base64 |
||||||
|
import urlparse |
||||||
|
import aldryn_common |
||||||
|
import warnings |
||||||
|
import vobject |
||||||
|
|
||||||
|
from django.core.urlresolvers import reverse |
||||||
|
from django.conf import settings |
||||||
|
from django.db import models |
||||||
|
from django.utils.encoding import python_2_unicode_compatible |
||||||
|
from django.utils.translation import ugettext_lazy as _ |
||||||
|
try: |
||||||
|
from django.utils.text import slugify |
||||||
|
except ImportError: |
||||||
|
# In Djano <= 1.4 slugify is here |
||||||
|
from django.template.defaultfilters import slugify |
||||||
|
|
||||||
|
from cms.models.pluginmodel import CMSPlugin |
||||||
|
from djangocms_text_ckeditor.fields import HTMLField |
||||||
|
from filer.fields.image import FilerImageField |
||||||
|
from parler.models import TranslatableModel, TranslatedFields |
||||||
|
import aldryn_common.admin_fields.sortedm2m |
||||||
|
|
||||||
|
from .utils import get_additional_styles |
||||||
|
|
||||||
|
|
||||||
|
@python_2_unicode_compatible |
||||||
|
class Group(TranslatableModel): |
||||||
|
translations = TranslatedFields( |
||||||
|
name=models.CharField(_('name'), max_length=255), |
||||||
|
description=HTMLField(_('description'), blank=True), |
||||||
|
address=models.TextField( |
||||||
|
verbose_name=_('address'), blank=True), |
||||||
|
city=models.CharField( |
||||||
|
verbose_name=_('city'), max_length=255, blank=True) |
||||||
|
) |
||||||
|
postal_code = models.CharField( |
||||||
|
verbose_name=_('postal code'), max_length=20, blank=True) |
||||||
|
phone = models.CharField( |
||||||
|
verbose_name=_('phone'), null=True, blank=True, max_length=100) |
||||||
|
fax = models.CharField( |
||||||
|
verbose_name=_('fax'), null=True, blank=True, max_length=100) |
||||||
|
email = models.EmailField( |
||||||
|
verbose_name=_('email'), blank=True, default='') |
||||||
|
website = models.URLField( |
||||||
|
verbose_name=_('website'), null=True, blank=True) |
||||||
|
|
||||||
|
@property |
||||||
|
def company_name(self): |
||||||
|
warnings.warn( |
||||||
|
'"Group.company_name" has been refactored to "Group.name"', |
||||||
|
DeprecationWarning |
||||||
|
) |
||||||
|
return self.safe_translation_getter('name') |
||||||
|
|
||||||
|
@property |
||||||
|
def company_description(self): |
||||||
|
warnings.warn( |
||||||
|
'"Group.company_description" has been refactored to ' |
||||||
|
'"Group.description"', |
||||||
|
DeprecationWarning |
||||||
|
) |
||||||
|
return self.safe_translation_getter('description') |
||||||
|
|
||||||
|
def __str__(self): |
||||||
|
return self.safe_translation_getter('name', str(self.pk)) |
||||||
|
|
||||||
|
class Meta: |
||||||
|
verbose_name = _('Group') |
||||||
|
verbose_name_plural = _('Groups') |
||||||
|
|
||||||
|
|
||||||
|
@python_2_unicode_compatible |
||||||
|
class Person(TranslatableModel): |
||||||
|
translations = TranslatedFields( |
||||||
|
function=models.CharField( |
||||||
|
_('function'), max_length=255, blank=True, default=''), |
||||||
|
description=HTMLField( |
||||||
|
_('Description'), blank=True, default=''), |
||||||
|
name=models.CharField( |
||||||
|
verbose_name=_('name'), max_length=255) |
||||||
|
) |
||||||
|
phone = models.CharField( |
||||||
|
verbose_name=_('phone'), null=True, blank=True, max_length=100) |
||||||
|
mobile = models.CharField( |
||||||
|
verbose_name=_('mobile'), null=True, blank=True, max_length=100) |
||||||
|
fax = models.CharField( |
||||||
|
verbose_name=_('fax'), null=True, blank=True, max_length=100) |
||||||
|
email = models.EmailField( |
||||||
|
verbose_name=_("email"), blank=True, default='') |
||||||
|
website = models.URLField( |
||||||
|
verbose_name=_('website'), null=True, blank=True) |
||||||
|
group = models.ForeignKey( |
||||||
|
Group, verbose_name=_('group'), blank=True, null=True) |
||||||
|
visual = FilerImageField( |
||||||
|
null=True, blank=True, default=None, on_delete=models.SET_NULL, related_name='visual') |
||||||
|
visual_portrait = FilerImageField( |
||||||
|
null=True, blank=True, default=None, on_delete=models.SET_NULL, related_name='visual_portrait') |
||||||
|
slug = models.CharField( |
||||||
|
verbose_name=_('unique slug'), max_length=255, blank=True, null=True, |
||||||
|
unique=True) |
||||||
|
vcard_enabled = models.BooleanField( |
||||||
|
verbose_name=_('enable vCard download'), default=True) |
||||||
|
user = models.ForeignKey( |
||||||
|
getattr(settings, 'AUTH_USER_MODEL', 'auth.User'), |
||||||
|
null=True, blank=True, unique=True) |
||||||
|
|
||||||
|
class Meta: |
||||||
|
verbose_name = _('Person') |
||||||
|
verbose_name_plural = _('People') |
||||||
|
|
||||||
|
def __str__(self): |
||||||
|
return self.name |
||||||
|
|
||||||
|
@property |
||||||
|
def comment(self): |
||||||
|
return self.safe_translation_getter('description', '') |
||||||
|
|
||||||
|
def get_absolute_url(self): |
||||||
|
if self.slug: |
||||||
|
kwargs = {'slug': self.slug} |
||||||
|
else: |
||||||
|
kwargs = {'pk': self.pk} |
||||||
|
return reverse('aldryn_people:person-detail', kwargs=kwargs) |
||||||
|
|
||||||
|
def get_vcard(self, request=None): |
||||||
|
if self.group: |
||||||
|
group_name = self.group.safe_translation_getter('name') |
||||||
|
else: |
||||||
|
group_name = '' |
||||||
|
function = self.safe_translation_getter('function') |
||||||
|
|
||||||
|
vcard = vobject.vCard() |
||||||
|
vcard.add('n').value = vobject.vcard.Name(given=self.name) |
||||||
|
vcard.add('fn').value = self.name |
||||||
|
|
||||||
|
if self.visual: |
||||||
|
try: |
||||||
|
with open(self.visual.path, 'rb') as f: |
||||||
|
photo = vcard.add('photo') |
||||||
|
photo.type_param = self.visual.extension.upper() |
||||||
|
photo.value = base64.b64encode(f.read()) |
||||||
|
photo.encoded = True |
||||||
|
photo.encoding_param = 'B' |
||||||
|
except IOError: |
||||||
|
if request: |
||||||
|
photo = vcard.add('photo') |
||||||
|
photo.type_param = self.visual.extension.upper() |
||||||
|
photo.value = urlparse.urljoin( |
||||||
|
request.build_absolute_uri(), self.visual.url) |
||||||
|
|
||||||
|
if self.email: |
||||||
|
vcard.add('email').value = self.email |
||||||
|
if function: |
||||||
|
vcard.add('title').value = function |
||||||
|
if self.phone: |
||||||
|
tel = vcard.add('tel') |
||||||
|
tel.value = unicode(self.phone) |
||||||
|
tel.type_param = 'WORK' |
||||||
|
if self.mobile: |
||||||
|
tel = vcard.add('tel') |
||||||
|
tel.value = unicode(self.mobile) |
||||||
|
tel.type_param = 'CELL' |
||||||
|
if self.fax: |
||||||
|
fax = vcard.add('tel') |
||||||
|
fax.value = unicode(self.fax) |
||||||
|
fax.type_param = 'FAX' |
||||||
|
if self.website: |
||||||
|
website = vcard.add('url') |
||||||
|
website.value = unicode(self.website) |
||||||
|
|
||||||
|
if self.group: |
||||||
|
if group_name: |
||||||
|
vcard.add('org').value = [group_name] |
||||||
|
if self.group.address or self.group.city or self.group.postal_code: |
||||||
|
vcard.add('adr') |
||||||
|
vcard.adr.type_param = 'WORK' |
||||||
|
vcard.adr.value = vobject.vcard.Address() |
||||||
|
if self.group.address: |
||||||
|
vcard.adr.value.street = self.group.address |
||||||
|
if self.group.city: |
||||||
|
vcard.adr.value.city = self.group.city |
||||||
|
if self.group.postal_code: |
||||||
|
vcard.adr.value.code = self.group.postal_code |
||||||
|
if self.group.phone: |
||||||
|
tel = vcard.add('tel') |
||||||
|
tel.value = unicode(self.group.phone) |
||||||
|
tel.type_param = 'WORK' |
||||||
|
if self.group.fax: |
||||||
|
fax = vcard.add('tel') |
||||||
|
fax.value = unicode(self.group.fax) |
||||||
|
fax.type_param = 'FAX' |
||||||
|
if self.group.website: |
||||||
|
website = vcard.add('url') |
||||||
|
website.value = unicode(self.group.website) |
||||||
|
|
||||||
|
return vcard.serialize() |
||||||
|
|
||||||
|
def save(self, **kwargs): |
||||||
|
name = self.safe_translation_getter('name') |
||||||
|
if not self.slug: |
||||||
|
self.slug = slugify(name) |
||||||
|
return super(Person, self).save(**kwargs) |
||||||
|
|
||||||
|
|
||||||
|
@python_2_unicode_compatible |
||||||
|
class BasePeoplePlugin(CMSPlugin): |
||||||
|
|
||||||
|
STYLE_CHOICES = [ |
||||||
|
('standard', _('Standard')), |
||||||
|
('feature', _('Feature')) |
||||||
|
] + get_additional_styles() |
||||||
|
|
||||||
|
style = models.CharField( |
||||||
|
_('Style'), choices=STYLE_CHOICES, |
||||||
|
default=STYLE_CHOICES[0][0], max_length=50) |
||||||
|
people = aldryn_common.admin_fields.sortedm2m.SortedM2MModelField( |
||||||
|
Person, blank=True, null=True) |
||||||
|
group_by_group = models.BooleanField( |
||||||
|
verbose_name=_('group by group'), |
||||||
|
default=True, |
||||||
|
help_text=_('when checked, people are grouped by their group') |
||||||
|
) |
||||||
|
show_links = models.BooleanField( |
||||||
|
verbose_name=_('Show links to Detail Page'), default=False) |
||||||
|
show_vcard = models.BooleanField( |
||||||
|
verbose_name=_('Show links to download vCard'), default=False) |
||||||
|
|
||||||
|
class Meta: |
||||||
|
abstract = True |
||||||
|
|
||||||
|
def __str__(self): |
||||||
|
return unicode(self.pk) |
||||||
|
|
||||||
|
def copy_relations(self, oldinstance): |
||||||
|
self.people = oldinstance.people.all() |
||||||
|
|
||||||
|
def get_selected_people(self): |
||||||
|
return self.people.select_related('group', 'visual') |
||||||
|
|
||||||
|
|
||||||
|
class PeoplePlugin(BasePeoplePlugin): |
||||||
|
|
||||||
|
class Meta: |
||||||
|
abstract = False |
||||||
@ -0,0 +1,34 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
|
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.conf import settings |
||||||
|
|
||||||
|
from aldryn_search.utils import get_index_base, strip_tags |
||||||
|
|
||||||
|
from .models import Person |
||||||
|
|
||||||
|
|
||||||
|
class PeopleIndex(get_index_base()): |
||||||
|
haystack_use_for_indexing = getattr(settings, "ALDRYN_PEOPLE_SEARCH", True) |
||||||
|
|
||||||
|
INDEX_TITLE = True |
||||||
|
|
||||||
|
def get_title(self, obj): |
||||||
|
return obj.name |
||||||
|
|
||||||
|
def get_description(self, obj): |
||||||
|
return obj.description |
||||||
|
|
||||||
|
def get_index_kwargs(self, language): |
||||||
|
return {'translations__language_code': language} |
||||||
|
|
||||||
|
def get_index_queryset(self, language): |
||||||
|
return self.get_model().objects.active_translations( |
||||||
|
language_code=language) |
||||||
|
|
||||||
|
def get_model(self): |
||||||
|
return Person |
||||||
|
|
||||||
|
def get_search_data(self, obj, language, request): |
||||||
|
return strip_tags(self.get_description(obj)).strip() |
||||||
@ -0,0 +1,159 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
import datetime |
||||||
|
from south.db import db |
||||||
|
from south.v2 import SchemaMigration |
||||||
|
from django.db import models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(SchemaMigration): |
||||||
|
|
||||||
|
def forwards(self, orm): |
||||||
|
# Adding model 'GroupTranslation' |
||||||
|
db.create_table(u'aldryn_people_group_translation', ( |
||||||
|
(u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), |
||||||
|
('company_name', self.gf('django.db.models.fields.CharField')(max_length=255)), |
||||||
|
('language_code', self.gf('django.db.models.fields.CharField')(max_length=15, db_index=True)), |
||||||
|
('master', self.gf('django.db.models.fields.related.ForeignKey')(related_name='translations', null=True, to=orm['aldryn_people.Group'])), |
||||||
|
)) |
||||||
|
db.send_create_signal(u'aldryn_people', ['GroupTranslation']) |
||||||
|
|
||||||
|
# Adding unique constraint on 'GroupTranslation', fields ['language_code', 'master'] |
||||||
|
db.create_unique(u'aldryn_people_group_translation', ['language_code', 'master_id']) |
||||||
|
|
||||||
|
# Adding model 'Group' |
||||||
|
db.create_table(u'aldryn_people_group', ( |
||||||
|
(u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), |
||||||
|
('address', self.gf('django.db.models.fields.TextField')()), |
||||||
|
('postal_code', self.gf('django.db.models.fields.CharField')(max_length=20)), |
||||||
|
('city', self.gf('django.db.models.fields.CharField')(max_length=255)), |
||||||
|
('phone', self.gf('phonenumber_field.modelfields.PhoneNumberField')(max_length=128, null=True, blank=True)), |
||||||
|
)) |
||||||
|
db.send_create_signal(u'aldryn_people', ['Group']) |
||||||
|
|
||||||
|
# Adding model 'PersonTranslation' |
||||||
|
db.create_table(u'aldryn_people_person_translation', ( |
||||||
|
(u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), |
||||||
|
('function', self.gf('django.db.models.fields.CharField')(max_length=255)), |
||||||
|
('comment', self.gf('django.db.models.fields.TextField')(default='', blank=True)), |
||||||
|
('language_code', self.gf('django.db.models.fields.CharField')(max_length=15, db_index=True)), |
||||||
|
('master', self.gf('django.db.models.fields.related.ForeignKey')(related_name='translations', null=True, to=orm['aldryn_people.Person'])), |
||||||
|
)) |
||||||
|
db.send_create_signal(u'aldryn_people', ['PersonTranslation']) |
||||||
|
|
||||||
|
# Adding unique constraint on 'PersonTranslation', fields ['language_code', 'master'] |
||||||
|
db.create_unique(u'aldryn_people_person_translation', ['language_code', 'master_id']) |
||||||
|
|
||||||
|
# Adding model 'Person' |
||||||
|
db.create_table(u'aldryn_people_person', ( |
||||||
|
(u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), |
||||||
|
('name', self.gf('django.db.models.fields.CharField')(max_length=255)), |
||||||
|
('phone', self.gf('phonenumber_field.modelfields.PhoneNumberField')(max_length=128, null=True, blank=True)), |
||||||
|
('mobile', self.gf('phonenumber_field.modelfields.PhoneNumberField')(max_length=128, null=True, blank=True)), |
||||||
|
('email', self.gf('django.db.models.fields.EmailField')(max_length=75)), |
||||||
|
('group', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['aldryn_people.Group'], null=True, blank=True)), |
||||||
|
)) |
||||||
|
db.send_create_signal(u'aldryn_people', ['Person']) |
||||||
|
|
||||||
|
# Adding model 'PeoplePlugin' |
||||||
|
db.create_table(u'cmsplugin_peopleplugin', ( |
||||||
|
(u'cmsplugin_ptr', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['cms.CMSPlugin'], unique=True, primary_key=True)), |
||||||
|
)) |
||||||
|
db.send_create_signal(u'aldryn_people', ['PeoplePlugin']) |
||||||
|
|
||||||
|
# Adding M2M table for field people on 'PeoplePlugin' |
||||||
|
db.create_table(u'aldryn_people_peopleplugin_people', ( |
||||||
|
('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), |
||||||
|
('peopleplugin', models.ForeignKey(orm[u'aldryn_people.peopleplugin'], null=False)), |
||||||
|
('person', models.ForeignKey(orm[u'aldryn_people.person'], null=False)) |
||||||
|
)) |
||||||
|
db.create_unique(u'aldryn_people_peopleplugin_people', ['peopleplugin_id', 'person_id']) |
||||||
|
|
||||||
|
|
||||||
|
def backwards(self, orm): |
||||||
|
# Removing unique constraint on 'PersonTranslation', fields ['language_code', 'master'] |
||||||
|
db.delete_unique(u'aldryn_people_person_translation', ['language_code', 'master_id']) |
||||||
|
|
||||||
|
# Removing unique constraint on 'GroupTranslation', fields ['language_code', 'master'] |
||||||
|
db.delete_unique(u'aldryn_people_group_translation', ['language_code', 'master_id']) |
||||||
|
|
||||||
|
# Deleting model 'GroupTranslation' |
||||||
|
db.delete_table(u'aldryn_people_group_translation') |
||||||
|
|
||||||
|
# Deleting model 'Group' |
||||||
|
db.delete_table(u'aldryn_people_group') |
||||||
|
|
||||||
|
# Deleting model 'PersonTranslation' |
||||||
|
db.delete_table(u'aldryn_people_person_translation') |
||||||
|
|
||||||
|
# Deleting model 'Person' |
||||||
|
db.delete_table(u'aldryn_people_person') |
||||||
|
|
||||||
|
# Deleting model 'PeoplePlugin' |
||||||
|
db.delete_table(u'cmsplugin_peopleplugin') |
||||||
|
|
||||||
|
# Removing M2M table for field people on 'PeoplePlugin' |
||||||
|
db.delete_table('aldryn_people_peopleplugin_people') |
||||||
|
|
||||||
|
|
||||||
|
models = { |
||||||
|
u'aldryn_people.group': { |
||||||
|
'Meta': {'object_name': 'Group'}, |
||||||
|
'address': ('django.db.models.fields.TextField', [], {}), |
||||||
|
'city': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'phone': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '20'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.grouptranslation': { |
||||||
|
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'GroupTranslation', 'db_table': "u'aldryn_people_group_translation'"}, |
||||||
|
'company_name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['aldryn_people.Group']"}) |
||||||
|
}, |
||||||
|
u'aldryn_people.peopleplugin': { |
||||||
|
'Meta': {'object_name': 'PeoplePlugin', 'db_table': "u'cmsplugin_peopleplugin'", '_ormbases': ['cms.CMSPlugin']}, |
||||||
|
u'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'people': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['aldryn_people.Person']", 'null': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.person': { |
||||||
|
'Meta': {'object_name': 'Person'}, |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}), |
||||||
|
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['aldryn_people.Group']", 'null': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'mobile': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
'phone': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.persontranslation': { |
||||||
|
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'PersonTranslation', 'db_table': "u'aldryn_people_person_translation'"}, |
||||||
|
'comment': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), |
||||||
|
'function': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['aldryn_people.Person']"}) |
||||||
|
}, |
||||||
|
'cms.cmsplugin': { |
||||||
|
'Meta': {'object_name': 'CMSPlugin'}, |
||||||
|
'changed_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}), |
||||||
|
'placeholder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}), |
||||||
|
'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}), |
||||||
|
'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) |
||||||
|
}, |
||||||
|
'cms.placeholder': { |
||||||
|
'Meta': {'object_name': 'Placeholder'}, |
||||||
|
'default_width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
complete_apps = ['aldryn_people'] |
||||||
@ -0,0 +1,169 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
import datetime |
||||||
|
from south.db import db |
||||||
|
from south.v2 import SchemaMigration |
||||||
|
from django.db import models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(SchemaMigration): |
||||||
|
|
||||||
|
depends_on = ( |
||||||
|
("filer", "0001_initial"), |
||||||
|
("cms", "0001_initial"), |
||||||
|
) |
||||||
|
|
||||||
|
def forwards(self, orm): |
||||||
|
# Adding field 'Person.visual' |
||||||
|
db.add_column(u'aldryn_people_person', 'visual', |
||||||
|
self.gf('django.db.models.fields.related.ForeignKey')(default=None, to=orm['filer.Image'], null=True, on_delete=models.SET_NULL, blank=True), |
||||||
|
keep_default=False) |
||||||
|
|
||||||
|
|
||||||
|
def backwards(self, orm): |
||||||
|
# Deleting field 'Person.visual' |
||||||
|
db.delete_column(u'aldryn_people_person', 'visual_id') |
||||||
|
|
||||||
|
|
||||||
|
models = { |
||||||
|
u'aldryn_people.group': { |
||||||
|
'Meta': {'object_name': 'Group'}, |
||||||
|
'address': ('django.db.models.fields.TextField', [], {}), |
||||||
|
'city': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'phone': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '20'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.grouptranslation': { |
||||||
|
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'GroupTranslation', 'db_table': "u'aldryn_people_group_translation'"}, |
||||||
|
'company_name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['aldryn_people.Group']"}) |
||||||
|
}, |
||||||
|
u'aldryn_people.peopleplugin': { |
||||||
|
'Meta': {'object_name': 'PeoplePlugin', 'db_table': "u'cmsplugin_peopleplugin'", '_ormbases': ['cms.CMSPlugin']}, |
||||||
|
u'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'people': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['aldryn_people.Person']", 'null': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.person': { |
||||||
|
'Meta': {'object_name': 'Person'}, |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}), |
||||||
|
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['aldryn_people.Group']", 'null': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'mobile': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
'phone': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'visual': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['filer.Image']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.persontranslation': { |
||||||
|
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'PersonTranslation', 'db_table': "u'aldryn_people_person_translation'"}, |
||||||
|
'comment': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), |
||||||
|
'function': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['aldryn_people.Person']"}) |
||||||
|
}, |
||||||
|
u'auth.group': { |
||||||
|
'Meta': {'object_name': 'Group'}, |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), |
||||||
|
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'auth.permission': { |
||||||
|
'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'}, |
||||||
|
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) |
||||||
|
}, |
||||||
|
u'auth.user': { |
||||||
|
'Meta': {'object_name': 'User'}, |
||||||
|
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), |
||||||
|
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
||||||
|
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
||||||
|
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), |
||||||
|
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), |
||||||
|
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) |
||||||
|
}, |
||||||
|
'cms.cmsplugin': { |
||||||
|
'Meta': {'object_name': 'CMSPlugin'}, |
||||||
|
'changed_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}), |
||||||
|
'placeholder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}), |
||||||
|
'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}), |
||||||
|
'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) |
||||||
|
}, |
||||||
|
'cms.placeholder': { |
||||||
|
'Meta': {'object_name': 'Placeholder'}, |
||||||
|
'default_width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) |
||||||
|
}, |
||||||
|
u'contenttypes.contenttype': { |
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, |
||||||
|
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) |
||||||
|
}, |
||||||
|
'filer.file': { |
||||||
|
'Meta': {'object_name': 'File'}, |
||||||
|
'_file_size': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'file': ('django.db.models.fields.files.FileField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'folder': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'all_files'", 'null': 'True', 'to': "orm['filer.Folder']"}), |
||||||
|
'has_all_mandatory_data': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), |
||||||
|
'original_filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'owned_files'", 'null': 'True', 'to': u"orm['auth.User']"}), |
||||||
|
'polymorphic_ctype': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'polymorphic_filer.file_set'", 'null': 'True', 'to': u"orm['contenttypes.ContentType']"}), |
||||||
|
'sha1': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '40', 'blank': 'True'}), |
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
'filer.folder': { |
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('parent', 'name'),)", 'object_name': 'Folder'}, |
||||||
|
'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'filer_owned_folders'", 'null': 'True', 'to': u"orm['auth.User']"}), |
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['filer.Folder']"}), |
||||||
|
'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
'filer.image': { |
||||||
|
'Meta': {'object_name': 'Image', '_ormbases': ['filer.File']}, |
||||||
|
'_height': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'_width': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'author': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'date_taken': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'default_alt_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'default_caption': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
u'file_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['filer.File']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'must_always_publish_author_credit': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'must_always_publish_copyright': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'subject_location': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '64', 'null': 'True', 'blank': 'True'}) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
complete_apps = ['aldryn_people'] |
||||||
@ -0,0 +1,164 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
import datetime |
||||||
|
from south.db import db |
||||||
|
from south.v2 import SchemaMigration |
||||||
|
from django.db import models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(SchemaMigration): |
||||||
|
|
||||||
|
def forwards(self, orm): |
||||||
|
# Adding field 'PeoplePlugin.sort_value' |
||||||
|
db.add_column(u'aldryn_people_peopleplugin_people', 'sort_value', |
||||||
|
self.gf('django.db.models.fields.IntegerField')(default=1), |
||||||
|
keep_default=False) |
||||||
|
|
||||||
|
|
||||||
|
def backwards(self, orm): |
||||||
|
# Deleting field 'PeoplePlugin.sort_value' |
||||||
|
db.delete_column(u'aldryn_people_peopleplugin_people', 'sort_value') |
||||||
|
|
||||||
|
|
||||||
|
models = { |
||||||
|
u'aldryn_people.group': { |
||||||
|
'Meta': {'object_name': 'Group'}, |
||||||
|
'address': ('django.db.models.fields.TextField', [], {}), |
||||||
|
'city': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'phone': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '20'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.grouptranslation': { |
||||||
|
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'GroupTranslation', 'db_table': "u'aldryn_people_group_translation'"}, |
||||||
|
'company_name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['aldryn_people.Group']"}) |
||||||
|
}, |
||||||
|
u'aldryn_people.peopleplugin': { |
||||||
|
'Meta': {'object_name': 'PeoplePlugin', 'db_table': "u'cmsplugin_peopleplugin'", '_ormbases': ['cms.CMSPlugin']}, |
||||||
|
u'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'people': ('sortedm2m.fields.SortedManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['aldryn_people.Person']", 'null': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.person': { |
||||||
|
'Meta': {'object_name': 'Person'}, |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'default': "''", 'max_length': '75', 'blank': 'True'}), |
||||||
|
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['aldryn_people.Group']", 'null': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'mobile': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
'phone': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'visual': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['filer.Image']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.persontranslation': { |
||||||
|
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'PersonTranslation', 'db_table': "u'aldryn_people_person_translation'"}, |
||||||
|
'comment': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), |
||||||
|
'function': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['aldryn_people.Person']"}) |
||||||
|
}, |
||||||
|
u'auth.group': { |
||||||
|
'Meta': {'object_name': 'Group'}, |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), |
||||||
|
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'auth.permission': { |
||||||
|
'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'}, |
||||||
|
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) |
||||||
|
}, |
||||||
|
u'auth.user': { |
||||||
|
'Meta': {'object_name': 'User'}, |
||||||
|
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), |
||||||
|
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
||||||
|
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
||||||
|
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), |
||||||
|
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), |
||||||
|
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) |
||||||
|
}, |
||||||
|
'cms.cmsplugin': { |
||||||
|
'Meta': {'object_name': 'CMSPlugin'}, |
||||||
|
'changed_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}), |
||||||
|
'placeholder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}), |
||||||
|
'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}), |
||||||
|
'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) |
||||||
|
}, |
||||||
|
'cms.placeholder': { |
||||||
|
'Meta': {'object_name': 'Placeholder'}, |
||||||
|
'default_width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) |
||||||
|
}, |
||||||
|
u'contenttypes.contenttype': { |
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, |
||||||
|
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) |
||||||
|
}, |
||||||
|
'filer.file': { |
||||||
|
'Meta': {'object_name': 'File'}, |
||||||
|
'_file_size': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'file': ('django.db.models.fields.files.FileField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'folder': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'all_files'", 'null': 'True', 'to': "orm['filer.Folder']"}), |
||||||
|
'has_all_mandatory_data': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), |
||||||
|
'original_filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'owned_files'", 'null': 'True', 'to': u"orm['auth.User']"}), |
||||||
|
'polymorphic_ctype': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'polymorphic_filer.file_set'", 'null': 'True', 'to': u"orm['contenttypes.ContentType']"}), |
||||||
|
'sha1': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '40', 'blank': 'True'}), |
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
'filer.folder': { |
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('parent', 'name'),)", 'object_name': 'Folder'}, |
||||||
|
'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'filer_owned_folders'", 'null': 'True', 'to': u"orm['auth.User']"}), |
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['filer.Folder']"}), |
||||||
|
'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
'filer.image': { |
||||||
|
'Meta': {'object_name': 'Image', '_ormbases': ['filer.File']}, |
||||||
|
'_height': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'_width': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'author': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'date_taken': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'default_alt_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'default_caption': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
u'file_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['filer.File']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'must_always_publish_author_credit': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'must_always_publish_copyright': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'subject_location': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '64', 'null': 'True', 'blank': 'True'}) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
complete_apps = ['aldryn_people'] |
||||||
@ -0,0 +1,165 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
import datetime |
||||||
|
from south.db import db |
||||||
|
from south.v2 import SchemaMigration |
||||||
|
from django.db import models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(SchemaMigration): |
||||||
|
|
||||||
|
def forwards(self, orm): |
||||||
|
# Adding field 'GroupTranslation.company_description' |
||||||
|
db.add_column(u'aldryn_people_group_translation', 'company_description', |
||||||
|
self.gf('djangocms_text_ckeditor.fields.HTMLField')(default='', blank=True), |
||||||
|
keep_default=False) |
||||||
|
|
||||||
|
|
||||||
|
def backwards(self, orm): |
||||||
|
# Deleting field 'GroupTranslation.company_description' |
||||||
|
db.delete_column(u'aldryn_people_group_translation', 'company_description') |
||||||
|
|
||||||
|
|
||||||
|
models = { |
||||||
|
u'aldryn_people.group': { |
||||||
|
'Meta': {'object_name': 'Group'}, |
||||||
|
'address': ('django.db.models.fields.TextField', [], {}), |
||||||
|
'city': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'phone': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '20'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.grouptranslation': { |
||||||
|
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'GroupTranslation', 'db_table': "u'aldryn_people_group_translation'"}, |
||||||
|
'company_description': ('djangocms_text_ckeditor.fields.HTMLField', [], {'blank': 'True'}), |
||||||
|
'company_name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['aldryn_people.Group']"}) |
||||||
|
}, |
||||||
|
u'aldryn_people.peopleplugin': { |
||||||
|
'Meta': {'object_name': 'PeoplePlugin', 'db_table': "u'cmsplugin_peopleplugin'", '_ormbases': ['cms.CMSPlugin']}, |
||||||
|
u'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'people': ('sortedm2m.fields.SortedManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['aldryn_people.Person']", 'null': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.person': { |
||||||
|
'Meta': {'object_name': 'Person'}, |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'default': "''", 'max_length': '75', 'blank': 'True'}), |
||||||
|
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['aldryn_people.Group']", 'null': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'mobile': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
'phone': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'visual': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['filer.Image']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.persontranslation': { |
||||||
|
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'PersonTranslation', 'db_table': "u'aldryn_people_person_translation'"}, |
||||||
|
'comment': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), |
||||||
|
'function': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['aldryn_people.Person']"}) |
||||||
|
}, |
||||||
|
u'auth.group': { |
||||||
|
'Meta': {'object_name': 'Group'}, |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), |
||||||
|
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'auth.permission': { |
||||||
|
'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'}, |
||||||
|
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) |
||||||
|
}, |
||||||
|
u'auth.user': { |
||||||
|
'Meta': {'object_name': 'User'}, |
||||||
|
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), |
||||||
|
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
||||||
|
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
||||||
|
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), |
||||||
|
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), |
||||||
|
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) |
||||||
|
}, |
||||||
|
'cms.cmsplugin': { |
||||||
|
'Meta': {'object_name': 'CMSPlugin'}, |
||||||
|
'changed_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}), |
||||||
|
'placeholder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}), |
||||||
|
'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}), |
||||||
|
'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) |
||||||
|
}, |
||||||
|
'cms.placeholder': { |
||||||
|
'Meta': {'object_name': 'Placeholder'}, |
||||||
|
'default_width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) |
||||||
|
}, |
||||||
|
u'contenttypes.contenttype': { |
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, |
||||||
|
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) |
||||||
|
}, |
||||||
|
'filer.file': { |
||||||
|
'Meta': {'object_name': 'File'}, |
||||||
|
'_file_size': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'file': ('django.db.models.fields.files.FileField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'folder': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'all_files'", 'null': 'True', 'to': "orm['filer.Folder']"}), |
||||||
|
'has_all_mandatory_data': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), |
||||||
|
'original_filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'owned_files'", 'null': 'True', 'to': u"orm['auth.User']"}), |
||||||
|
'polymorphic_ctype': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'polymorphic_filer.file_set'", 'null': 'True', 'to': u"orm['contenttypes.ContentType']"}), |
||||||
|
'sha1': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '40', 'blank': 'True'}), |
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
'filer.folder': { |
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('parent', 'name'),)", 'object_name': 'Folder'}, |
||||||
|
'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'filer_owned_folders'", 'null': 'True', 'to': u"orm['auth.User']"}), |
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['filer.Folder']"}), |
||||||
|
'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
'filer.image': { |
||||||
|
'Meta': {'object_name': 'Image', '_ormbases': ['filer.File']}, |
||||||
|
'_height': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'_width': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'author': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'date_taken': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'default_alt_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'default_caption': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
u'file_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['filer.File']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'must_always_publish_author_credit': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'must_always_publish_copyright': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'subject_location': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '64', 'null': 'True', 'blank': 'True'}) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
complete_apps = ['aldryn_people'] |
||||||
@ -0,0 +1,166 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
import datetime |
||||||
|
from south.db import db |
||||||
|
from south.v2 import SchemaMigration |
||||||
|
from django.db import models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(SchemaMigration): |
||||||
|
|
||||||
|
def forwards(self, orm): |
||||||
|
# Adding field 'PeoplePlugin.group_by_group' |
||||||
|
db.add_column(u'cmsplugin_peopleplugin', 'group_by_group', |
||||||
|
self.gf('django.db.models.fields.BooleanField')(default=True), |
||||||
|
keep_default=False) |
||||||
|
|
||||||
|
|
||||||
|
def backwards(self, orm): |
||||||
|
# Deleting field 'PeoplePlugin.group_by_group' |
||||||
|
db.delete_column(u'cmsplugin_peopleplugin', 'group_by_group') |
||||||
|
|
||||||
|
|
||||||
|
models = { |
||||||
|
u'aldryn_people.group': { |
||||||
|
'Meta': {'object_name': 'Group'}, |
||||||
|
'address': ('django.db.models.fields.TextField', [], {}), |
||||||
|
'city': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'phone': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '20'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.grouptranslation': { |
||||||
|
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'GroupTranslation', 'db_table': "u'aldryn_people_group_translation'"}, |
||||||
|
'company_description': ('djangocms_text_ckeditor.fields.HTMLField', [], {'blank': 'True'}), |
||||||
|
'company_name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['aldryn_people.Group']"}) |
||||||
|
}, |
||||||
|
u'aldryn_people.peopleplugin': { |
||||||
|
'Meta': {'object_name': 'PeoplePlugin', 'db_table': "u'cmsplugin_peopleplugin'", '_ormbases': ['cms.CMSPlugin']}, |
||||||
|
u'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'group_by_group': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'people': ('sortedm2m.fields.SortedManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['aldryn_people.Person']", 'null': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.person': { |
||||||
|
'Meta': {'object_name': 'Person'}, |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'default': "''", 'max_length': '75', 'blank': 'True'}), |
||||||
|
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['aldryn_people.Group']", 'null': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'mobile': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
'phone': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'visual': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['filer.Image']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.persontranslation': { |
||||||
|
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'PersonTranslation', 'db_table': "u'aldryn_people_person_translation'"}, |
||||||
|
'comment': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), |
||||||
|
'function': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['aldryn_people.Person']"}) |
||||||
|
}, |
||||||
|
u'auth.group': { |
||||||
|
'Meta': {'object_name': 'Group'}, |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), |
||||||
|
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'auth.permission': { |
||||||
|
'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'}, |
||||||
|
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) |
||||||
|
}, |
||||||
|
u'auth.user': { |
||||||
|
'Meta': {'object_name': 'User'}, |
||||||
|
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), |
||||||
|
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
||||||
|
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
||||||
|
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), |
||||||
|
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), |
||||||
|
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) |
||||||
|
}, |
||||||
|
'cms.cmsplugin': { |
||||||
|
'Meta': {'object_name': 'CMSPlugin'}, |
||||||
|
'changed_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}), |
||||||
|
'placeholder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}), |
||||||
|
'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}), |
||||||
|
'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) |
||||||
|
}, |
||||||
|
'cms.placeholder': { |
||||||
|
'Meta': {'object_name': 'Placeholder'}, |
||||||
|
'default_width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) |
||||||
|
}, |
||||||
|
u'contenttypes.contenttype': { |
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, |
||||||
|
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) |
||||||
|
}, |
||||||
|
'filer.file': { |
||||||
|
'Meta': {'object_name': 'File'}, |
||||||
|
'_file_size': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'file': ('django.db.models.fields.files.FileField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'folder': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'all_files'", 'null': 'True', 'to': "orm['filer.Folder']"}), |
||||||
|
'has_all_mandatory_data': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), |
||||||
|
'original_filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'owned_files'", 'null': 'True', 'to': u"orm['auth.User']"}), |
||||||
|
'polymorphic_ctype': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'polymorphic_filer.file_set'", 'null': 'True', 'to': u"orm['contenttypes.ContentType']"}), |
||||||
|
'sha1': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '40', 'blank': 'True'}), |
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
'filer.folder': { |
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('parent', 'name'),)", 'object_name': 'Folder'}, |
||||||
|
'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'filer_owned_folders'", 'null': 'True', 'to': u"orm['auth.User']"}), |
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['filer.Folder']"}), |
||||||
|
'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
'filer.image': { |
||||||
|
'Meta': {'object_name': 'Image', '_ormbases': ['filer.File']}, |
||||||
|
'_height': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'_width': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'author': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'date_taken': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'default_alt_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'default_caption': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
u'file_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['filer.File']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'must_always_publish_author_credit': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'must_always_publish_copyright': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'subject_location': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '64', 'null': 'True', 'blank': 'True'}) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
complete_apps = ['aldryn_people'] |
||||||
@ -0,0 +1,167 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
import datetime |
||||||
|
from south.db import db |
||||||
|
from south.v2 import SchemaMigration |
||||||
|
from django.db import models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(SchemaMigration): |
||||||
|
|
||||||
|
def forwards(self, orm): |
||||||
|
# Adding field 'PeoplePlugin.show_links' |
||||||
|
db.add_column(u'cmsplugin_peopleplugin', 'show_links', |
||||||
|
self.gf('django.db.models.fields.BooleanField')(default=False), |
||||||
|
keep_default=False) |
||||||
|
|
||||||
|
|
||||||
|
def backwards(self, orm): |
||||||
|
# Deleting field 'PeoplePlugin.show_links' |
||||||
|
db.delete_column(u'cmsplugin_peopleplugin', 'show_links') |
||||||
|
|
||||||
|
|
||||||
|
models = { |
||||||
|
u'aldryn_people.group': { |
||||||
|
'Meta': {'object_name': 'Group'}, |
||||||
|
'address': ('django.db.models.fields.TextField', [], {'blank': 'True'}), |
||||||
|
'city': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'phone': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.grouptranslation': { |
||||||
|
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'GroupTranslation', 'db_table': "u'aldryn_people_group_translation'"}, |
||||||
|
'company_description': ('djangocms_text_ckeditor.fields.HTMLField', [], {'blank': 'True'}), |
||||||
|
'company_name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['aldryn_people.Group']"}) |
||||||
|
}, |
||||||
|
u'aldryn_people.peopleplugin': { |
||||||
|
'Meta': {'object_name': 'PeoplePlugin', '_ormbases': ['cms.CMSPlugin']}, |
||||||
|
u'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'group_by_group': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'people': ('sortedm2m.fields.SortedManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['aldryn_people.Person']", 'null': 'True', 'blank': 'True'}), |
||||||
|
'show_links': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.person': { |
||||||
|
'Meta': {'object_name': 'Person'}, |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'default': "''", 'max_length': '75', 'blank': 'True'}), |
||||||
|
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['aldryn_people.Group']", 'null': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'mobile': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
'phone': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'visual': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['filer.Image']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.persontranslation': { |
||||||
|
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'PersonTranslation', 'db_table': "u'aldryn_people_person_translation'"}, |
||||||
|
'comment': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), |
||||||
|
'function': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['aldryn_people.Person']"}) |
||||||
|
}, |
||||||
|
u'auth.group': { |
||||||
|
'Meta': {'object_name': 'Group'}, |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), |
||||||
|
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'auth.permission': { |
||||||
|
'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'}, |
||||||
|
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) |
||||||
|
}, |
||||||
|
u'auth.user': { |
||||||
|
'Meta': {'object_name': 'User'}, |
||||||
|
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), |
||||||
|
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
||||||
|
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
||||||
|
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), |
||||||
|
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), |
||||||
|
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) |
||||||
|
}, |
||||||
|
'cms.cmsplugin': { |
||||||
|
'Meta': {'object_name': 'CMSPlugin'}, |
||||||
|
'changed_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}), |
||||||
|
'placeholder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}), |
||||||
|
'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}), |
||||||
|
'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) |
||||||
|
}, |
||||||
|
'cms.placeholder': { |
||||||
|
'Meta': {'object_name': 'Placeholder'}, |
||||||
|
'default_width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) |
||||||
|
}, |
||||||
|
u'contenttypes.contenttype': { |
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, |
||||||
|
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) |
||||||
|
}, |
||||||
|
'filer.file': { |
||||||
|
'Meta': {'object_name': 'File'}, |
||||||
|
'_file_size': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'file': ('django.db.models.fields.files.FileField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'folder': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'all_files'", 'null': 'True', 'to': "orm['filer.Folder']"}), |
||||||
|
'has_all_mandatory_data': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), |
||||||
|
'original_filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'owned_files'", 'null': 'True', 'to': u"orm['auth.User']"}), |
||||||
|
'polymorphic_ctype': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'polymorphic_filer.file_set'", 'null': 'True', 'to': u"orm['contenttypes.ContentType']"}), |
||||||
|
'sha1': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '40', 'blank': 'True'}), |
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
'filer.folder': { |
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('parent', 'name'),)", 'object_name': 'Folder'}, |
||||||
|
'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'filer_owned_folders'", 'null': 'True', 'to': u"orm['auth.User']"}), |
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['filer.Folder']"}), |
||||||
|
'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
'filer.image': { |
||||||
|
'Meta': {'object_name': 'Image', '_ormbases': ['filer.File']}, |
||||||
|
'_height': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'_width': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'author': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'date_taken': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'default_alt_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'default_caption': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
u'file_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['filer.File']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'must_always_publish_author_credit': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'must_always_publish_copyright': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'subject_location': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '64', 'null': 'True', 'blank': 'True'}) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
complete_apps = ['aldryn_people'] |
||||||
@ -0,0 +1,168 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
import datetime |
||||||
|
from south.db import db |
||||||
|
from south.v2 import SchemaMigration |
||||||
|
from django.db import models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(SchemaMigration): |
||||||
|
|
||||||
|
def forwards(self, orm): |
||||||
|
# Adding field 'Person.slug' |
||||||
|
db.add_column(u'aldryn_people_person', 'slug', |
||||||
|
self.gf('django.db.models.fields.CharField')(max_length=255, unique=True, null=True, blank=True), |
||||||
|
keep_default=False) |
||||||
|
|
||||||
|
|
||||||
|
def backwards(self, orm): |
||||||
|
# Deleting field 'Person.slug' |
||||||
|
db.delete_column(u'aldryn_people_person', 'slug') |
||||||
|
|
||||||
|
|
||||||
|
models = { |
||||||
|
u'aldryn_people.group': { |
||||||
|
'Meta': {'object_name': 'Group'}, |
||||||
|
'address': ('django.db.models.fields.TextField', [], {'blank': 'True'}), |
||||||
|
'city': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'phone': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.grouptranslation': { |
||||||
|
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'GroupTranslation', 'db_table': "u'aldryn_people_group_translation'"}, |
||||||
|
'company_description': ('djangocms_text_ckeditor.fields.HTMLField', [], {'blank': 'True'}), |
||||||
|
'company_name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['aldryn_people.Group']"}) |
||||||
|
}, |
||||||
|
u'aldryn_people.peopleplugin': { |
||||||
|
'Meta': {'object_name': 'PeoplePlugin', '_ormbases': ['cms.CMSPlugin']}, |
||||||
|
u'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'group_by_group': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'people': ('sortedm2m.fields.SortedManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['aldryn_people.Person']", 'null': 'True', 'blank': 'True'}), |
||||||
|
'show_links': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.person': { |
||||||
|
'Meta': {'object_name': 'Person'}, |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'default': "''", 'max_length': '75', 'blank': 'True'}), |
||||||
|
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['aldryn_people.Group']", 'null': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'mobile': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
'phone': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'slug': ('django.db.models.fields.CharField', [], {'max_length': '255', 'unique': 'True', 'null': 'True', 'blank': 'True'}), |
||||||
|
'visual': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['filer.Image']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.persontranslation': { |
||||||
|
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'PersonTranslation', 'db_table': "u'aldryn_people_person_translation'"}, |
||||||
|
'comment': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), |
||||||
|
'function': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['aldryn_people.Person']"}) |
||||||
|
}, |
||||||
|
u'auth.group': { |
||||||
|
'Meta': {'object_name': 'Group'}, |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), |
||||||
|
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'auth.permission': { |
||||||
|
'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'}, |
||||||
|
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) |
||||||
|
}, |
||||||
|
u'auth.user': { |
||||||
|
'Meta': {'object_name': 'User'}, |
||||||
|
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), |
||||||
|
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
||||||
|
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
||||||
|
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), |
||||||
|
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), |
||||||
|
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) |
||||||
|
}, |
||||||
|
'cms.cmsplugin': { |
||||||
|
'Meta': {'object_name': 'CMSPlugin'}, |
||||||
|
'changed_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}), |
||||||
|
'placeholder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}), |
||||||
|
'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}), |
||||||
|
'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) |
||||||
|
}, |
||||||
|
'cms.placeholder': { |
||||||
|
'Meta': {'object_name': 'Placeholder'}, |
||||||
|
'default_width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) |
||||||
|
}, |
||||||
|
u'contenttypes.contenttype': { |
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, |
||||||
|
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) |
||||||
|
}, |
||||||
|
'filer.file': { |
||||||
|
'Meta': {'object_name': 'File'}, |
||||||
|
'_file_size': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'file': ('django.db.models.fields.files.FileField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'folder': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'all_files'", 'null': 'True', 'to': "orm['filer.Folder']"}), |
||||||
|
'has_all_mandatory_data': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), |
||||||
|
'original_filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'owned_files'", 'null': 'True', 'to': u"orm['auth.User']"}), |
||||||
|
'polymorphic_ctype': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'polymorphic_filer.file_set'", 'null': 'True', 'to': u"orm['contenttypes.ContentType']"}), |
||||||
|
'sha1': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '40', 'blank': 'True'}), |
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
'filer.folder': { |
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('parent', 'name'),)", 'object_name': 'Folder'}, |
||||||
|
'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'filer_owned_folders'", 'null': 'True', 'to': u"orm['auth.User']"}), |
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['filer.Folder']"}), |
||||||
|
'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
'filer.image': { |
||||||
|
'Meta': {'object_name': 'Image', '_ormbases': ['filer.File']}, |
||||||
|
'_height': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'_width': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'author': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'date_taken': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'default_alt_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'default_caption': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
u'file_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['filer.File']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'must_always_publish_author_credit': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'must_always_publish_copyright': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'subject_location': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '64', 'null': 'True', 'blank': 'True'}) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
complete_apps = ['aldryn_people'] |
||||||
@ -0,0 +1,185 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
import datetime |
||||||
|
from south.db import db |
||||||
|
from south.v2 import DataMigration |
||||||
|
from django.db import models |
||||||
|
from django.template.defaultfilters import slugify |
||||||
|
|
||||||
|
|
||||||
|
class Migration(DataMigration): |
||||||
|
|
||||||
|
def forwards(self, orm): |
||||||
|
for person in orm.Person.objects.all(): |
||||||
|
if person.slug: |
||||||
|
continue |
||||||
|
slug = slugify(person.name) |
||||||
|
try: |
||||||
|
# check for an existing person with this slug |
||||||
|
orm.Person.objects.get(slug=slug) |
||||||
|
except orm.Person.DoesNotExist: |
||||||
|
# nope, let's save that one |
||||||
|
person.slug = slug |
||||||
|
person.save() |
||||||
|
else: |
||||||
|
# try to find a slug by appending a number |
||||||
|
for i in range(2, 100): |
||||||
|
try: |
||||||
|
# check for an existing person with this slug |
||||||
|
orm.Person.objects.get(slug='%s-%i' % (slug, i)) |
||||||
|
except orm.Person.DoesNotExist: |
||||||
|
person.slug = '%s-%i' % (slug, i) |
||||||
|
person.save() |
||||||
|
break |
||||||
|
|
||||||
|
def backwards(self, orm): |
||||||
|
# nothing to do here |
||||||
|
pass |
||||||
|
|
||||||
|
models = { |
||||||
|
u'aldryn_people.group': { |
||||||
|
'Meta': {'object_name': 'Group'}, |
||||||
|
'address': ('django.db.models.fields.TextField', [], {'blank': 'True'}), |
||||||
|
'city': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'phone': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.grouptranslation': { |
||||||
|
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'GroupTranslation', 'db_table': "u'aldryn_people_group_translation'"}, |
||||||
|
'company_description': ('djangocms_text_ckeditor.fields.HTMLField', [], {'blank': 'True'}), |
||||||
|
'company_name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['aldryn_people.Group']"}) |
||||||
|
}, |
||||||
|
u'aldryn_people.peopleplugin': { |
||||||
|
'Meta': {'object_name': 'PeoplePlugin', '_ormbases': ['cms.CMSPlugin']}, |
||||||
|
u'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'group_by_group': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'people': ('sortedm2m.fields.SortedManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['aldryn_people.Person']", 'null': 'True', 'blank': 'True'}), |
||||||
|
'show_links': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.person': { |
||||||
|
'Meta': {'object_name': 'Person'}, |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'default': "''", 'max_length': '75', 'blank': 'True'}), |
||||||
|
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['aldryn_people.Group']", 'null': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'mobile': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
'phone': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'slug': ('django.db.models.fields.CharField', [], {'max_length': '255', 'unique': 'True', 'null': 'True', 'blank': 'True'}), |
||||||
|
'visual': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['filer.Image']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.persontranslation': { |
||||||
|
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'PersonTranslation', 'db_table': "u'aldryn_people_person_translation'"}, |
||||||
|
'comment': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), |
||||||
|
'function': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['aldryn_people.Person']"}) |
||||||
|
}, |
||||||
|
u'auth.group': { |
||||||
|
'Meta': {'object_name': 'Group'}, |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), |
||||||
|
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'auth.permission': { |
||||||
|
'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'}, |
||||||
|
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) |
||||||
|
}, |
||||||
|
u'auth.user': { |
||||||
|
'Meta': {'object_name': 'User'}, |
||||||
|
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), |
||||||
|
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
||||||
|
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
||||||
|
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), |
||||||
|
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), |
||||||
|
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) |
||||||
|
}, |
||||||
|
'cms.cmsplugin': { |
||||||
|
'Meta': {'object_name': 'CMSPlugin'}, |
||||||
|
'changed_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}), |
||||||
|
'placeholder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}), |
||||||
|
'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}), |
||||||
|
'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) |
||||||
|
}, |
||||||
|
'cms.placeholder': { |
||||||
|
'Meta': {'object_name': 'Placeholder'}, |
||||||
|
'default_width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) |
||||||
|
}, |
||||||
|
u'contenttypes.contenttype': { |
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, |
||||||
|
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) |
||||||
|
}, |
||||||
|
'filer.file': { |
||||||
|
'Meta': {'object_name': 'File'}, |
||||||
|
'_file_size': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'file': ('django.db.models.fields.files.FileField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'folder': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'all_files'", 'null': 'True', 'to': "orm['filer.Folder']"}), |
||||||
|
'has_all_mandatory_data': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), |
||||||
|
'original_filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'owned_files'", 'null': 'True', 'to': u"orm['auth.User']"}), |
||||||
|
'polymorphic_ctype': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'polymorphic_filer.file_set'", 'null': 'True', 'to': u"orm['contenttypes.ContentType']"}), |
||||||
|
'sha1': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '40', 'blank': 'True'}), |
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
'filer.folder': { |
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('parent', 'name'),)", 'object_name': 'Folder'}, |
||||||
|
'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'filer_owned_folders'", 'null': 'True', 'to': u"orm['auth.User']"}), |
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['filer.Folder']"}), |
||||||
|
'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
'filer.image': { |
||||||
|
'Meta': {'object_name': 'Image', '_ormbases': ['filer.File']}, |
||||||
|
'_height': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'_width': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'author': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'date_taken': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'default_alt_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'default_caption': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
u'file_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['filer.File']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'must_always_publish_author_credit': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'must_always_publish_copyright': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'subject_location': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '64', 'null': 'True', 'blank': 'True'}) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
complete_apps = ['aldryn_people'] |
||||||
|
symmetrical = True |
||||||
@ -0,0 +1,176 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
import datetime |
||||||
|
from south.db import db |
||||||
|
from south.v2 import SchemaMigration |
||||||
|
from django.db import connection |
||||||
|
|
||||||
|
|
||||||
|
class Migration(SchemaMigration): |
||||||
|
|
||||||
|
TABLES_MAPPING = { |
||||||
|
'cmsplugin_peopleplugin': 'aldryn_people_peopleplugin', |
||||||
|
} |
||||||
|
|
||||||
|
REVERSE_TABLES_MAPPING = dict((v, k) for k, v in TABLES_MAPPING.iteritems()) |
||||||
|
|
||||||
|
@staticmethod |
||||||
|
def rename_tables_by_map(mapper): |
||||||
|
tables_names = connection.introspection.table_names() |
||||||
|
for table_name in tables_names: |
||||||
|
new_table_name = mapper.get(table_name) |
||||||
|
if new_table_name: |
||||||
|
db.rename_table(table_name, new_table_name) |
||||||
|
|
||||||
|
def forwards(self, orm): |
||||||
|
self.rename_tables_by_map(self.TABLES_MAPPING) |
||||||
|
|
||||||
|
def backwards(self, orm): |
||||||
|
self.rename_tables_by_map(self.REVERSE_TABLES_MAPPING) |
||||||
|
|
||||||
|
models = { |
||||||
|
u'aldryn_people.group': { |
||||||
|
'Meta': {'object_name': 'Group'}, |
||||||
|
'address': ('django.db.models.fields.TextField', [], {'blank': 'True'}), |
||||||
|
'city': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'phone': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.grouptranslation': { |
||||||
|
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'GroupTranslation', 'db_table': "u'aldryn_people_group_translation'"}, |
||||||
|
'company_description': ('djangocms_text_ckeditor.fields.HTMLField', [], {'blank': 'True'}), |
||||||
|
'company_name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['aldryn_people.Group']"}) |
||||||
|
}, |
||||||
|
u'aldryn_people.peopleplugin': { |
||||||
|
'Meta': {'object_name': 'PeoplePlugin', '_ormbases': ['cms.CMSPlugin']}, |
||||||
|
u'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'group_by_group': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'people': ('sortedm2m.fields.SortedManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['aldryn_people.Person']", 'null': 'True', 'blank': 'True'}), |
||||||
|
'show_links': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.person': { |
||||||
|
'Meta': {'object_name': 'Person'}, |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'default': "''", 'max_length': '75', 'blank': 'True'}), |
||||||
|
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['aldryn_people.Group']", 'null': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'mobile': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
'phone': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'slug': ('django.db.models.fields.CharField', [], {'max_length': '255', 'unique': 'True', 'null': 'True', 'blank': 'True'}), |
||||||
|
'visual': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['filer.Image']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.persontranslation': { |
||||||
|
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'PersonTranslation', 'db_table': "u'aldryn_people_person_translation'"}, |
||||||
|
'comment': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), |
||||||
|
'function': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['aldryn_people.Person']"}) |
||||||
|
}, |
||||||
|
u'auth.group': { |
||||||
|
'Meta': {'object_name': 'Group'}, |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), |
||||||
|
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'auth.permission': { |
||||||
|
'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'}, |
||||||
|
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) |
||||||
|
}, |
||||||
|
u'auth.user': { |
||||||
|
'Meta': {'object_name': 'User'}, |
||||||
|
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), |
||||||
|
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
||||||
|
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
||||||
|
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), |
||||||
|
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), |
||||||
|
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) |
||||||
|
}, |
||||||
|
'cms.cmsplugin': { |
||||||
|
'Meta': {'object_name': 'CMSPlugin'}, |
||||||
|
'changed_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}), |
||||||
|
'placeholder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}), |
||||||
|
'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}), |
||||||
|
'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) |
||||||
|
}, |
||||||
|
'cms.placeholder': { |
||||||
|
'Meta': {'object_name': 'Placeholder'}, |
||||||
|
'default_width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) |
||||||
|
}, |
||||||
|
u'contenttypes.contenttype': { |
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, |
||||||
|
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) |
||||||
|
}, |
||||||
|
'filer.file': { |
||||||
|
'Meta': {'object_name': 'File'}, |
||||||
|
'_file_size': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'file': ('django.db.models.fields.files.FileField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'folder': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'all_files'", 'null': 'True', 'to': "orm['filer.Folder']"}), |
||||||
|
'has_all_mandatory_data': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), |
||||||
|
'original_filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'owned_files'", 'null': 'True', 'to': u"orm['auth.User']"}), |
||||||
|
'polymorphic_ctype': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'polymorphic_filer.file_set'", 'null': 'True', 'to': u"orm['contenttypes.ContentType']"}), |
||||||
|
'sha1': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '40', 'blank': 'True'}), |
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
'filer.folder': { |
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('parent', 'name'),)", 'object_name': 'Folder'}, |
||||||
|
'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'filer_owned_folders'", 'null': 'True', 'to': u"orm['auth.User']"}), |
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['filer.Folder']"}), |
||||||
|
'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
'filer.image': { |
||||||
|
'Meta': {'object_name': 'Image', '_ormbases': ['filer.File']}, |
||||||
|
'_height': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'_width': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'author': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'date_taken': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'default_alt_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'default_caption': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
u'file_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['filer.File']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'must_always_publish_author_credit': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'must_always_publish_copyright': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'subject_location': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '64', 'null': 'True', 'blank': 'True'}) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
complete_apps = ['aldryn_people'] |
||||||
@ -0,0 +1,169 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
import datetime |
||||||
|
from south.db import db |
||||||
|
from south.v2 import SchemaMigration |
||||||
|
from django.db import models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(SchemaMigration): |
||||||
|
|
||||||
|
def forwards(self, orm): |
||||||
|
# Adding field 'PeoplePlugin.style' |
||||||
|
db.add_column(u'aldryn_people_peopleplugin', 'style', |
||||||
|
self.gf('django.db.models.fields.CharField')(default='standard', max_length=50), |
||||||
|
keep_default=False) |
||||||
|
|
||||||
|
|
||||||
|
def backwards(self, orm): |
||||||
|
# Deleting field 'PeoplePlugin.style' |
||||||
|
db.delete_column(u'aldryn_people_peopleplugin', 'style') |
||||||
|
|
||||||
|
|
||||||
|
models = { |
||||||
|
u'aldryn_people.group': { |
||||||
|
'Meta': {'object_name': 'Group'}, |
||||||
|
'address': ('django.db.models.fields.TextField', [], {'blank': 'True'}), |
||||||
|
'city': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'phone': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.grouptranslation': { |
||||||
|
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'GroupTranslation', 'db_table': "u'aldryn_people_group_translation'"}, |
||||||
|
'company_description': ('djangocms_text_ckeditor.fields.HTMLField', [], {'blank': 'True'}), |
||||||
|
'company_name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['aldryn_people.Group']"}) |
||||||
|
}, |
||||||
|
u'aldryn_people.peopleplugin': { |
||||||
|
'Meta': {'object_name': 'PeoplePlugin', '_ormbases': ['cms.CMSPlugin']}, |
||||||
|
u'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'group_by_group': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'people': ('sortedm2m.fields.SortedManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['aldryn_people.Person']", 'null': 'True', 'blank': 'True'}), |
||||||
|
'show_links': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'style': ('django.db.models.fields.CharField', [], {'default': "'standard'", 'max_length': '50'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.person': { |
||||||
|
'Meta': {'object_name': 'Person'}, |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'default': "''", 'max_length': '75', 'blank': 'True'}), |
||||||
|
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['aldryn_people.Group']", 'null': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'mobile': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
'phone': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'slug': ('django.db.models.fields.CharField', [], {'max_length': '255', 'unique': 'True', 'null': 'True', 'blank': 'True'}), |
||||||
|
'visual': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['filer.Image']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.persontranslation': { |
||||||
|
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'PersonTranslation', 'db_table': "u'aldryn_people_person_translation'"}, |
||||||
|
'comment': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), |
||||||
|
'function': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['aldryn_people.Person']"}) |
||||||
|
}, |
||||||
|
u'auth.group': { |
||||||
|
'Meta': {'object_name': 'Group'}, |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), |
||||||
|
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'auth.permission': { |
||||||
|
'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'}, |
||||||
|
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) |
||||||
|
}, |
||||||
|
u'auth.user': { |
||||||
|
'Meta': {'object_name': 'User'}, |
||||||
|
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), |
||||||
|
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
||||||
|
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
||||||
|
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), |
||||||
|
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), |
||||||
|
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) |
||||||
|
}, |
||||||
|
'cms.cmsplugin': { |
||||||
|
'Meta': {'object_name': 'CMSPlugin'}, |
||||||
|
'changed_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}), |
||||||
|
'placeholder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}), |
||||||
|
'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}), |
||||||
|
'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) |
||||||
|
}, |
||||||
|
'cms.placeholder': { |
||||||
|
'Meta': {'object_name': 'Placeholder'}, |
||||||
|
'default_width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) |
||||||
|
}, |
||||||
|
u'contenttypes.contenttype': { |
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, |
||||||
|
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) |
||||||
|
}, |
||||||
|
'filer.file': { |
||||||
|
'Meta': {'object_name': 'File'}, |
||||||
|
'_file_size': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'file': ('django.db.models.fields.files.FileField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'folder': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'all_files'", 'null': 'True', 'to': "orm['filer.Folder']"}), |
||||||
|
'has_all_mandatory_data': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), |
||||||
|
'original_filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'owned_files'", 'null': 'True', 'to': u"orm['auth.User']"}), |
||||||
|
'polymorphic_ctype': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'polymorphic_filer.file_set'", 'null': 'True', 'to': u"orm['contenttypes.ContentType']"}), |
||||||
|
'sha1': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '40', 'blank': 'True'}), |
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
'filer.folder': { |
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('parent', 'name'),)", 'object_name': 'Folder'}, |
||||||
|
'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'filer_owned_folders'", 'null': 'True', 'to': u"orm['auth.User']"}), |
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['filer.Folder']"}), |
||||||
|
'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
'filer.image': { |
||||||
|
'Meta': {'object_name': 'Image', '_ormbases': ['filer.File']}, |
||||||
|
'_height': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'_width': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'author': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'date_taken': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'default_alt_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'default_caption': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
u'file_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['filer.File']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'must_always_publish_author_credit': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'must_always_publish_copyright': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'subject_location': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '64', 'null': 'True', 'blank': 'True'}) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
complete_apps = ['aldryn_people'] |
||||||
@ -0,0 +1,170 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
from south.utils import datetime_utils as datetime |
||||||
|
from south.db import db |
||||||
|
from south.v2 import SchemaMigration |
||||||
|
from django.db import models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(SchemaMigration): |
||||||
|
|
||||||
|
def forwards(self, orm): |
||||||
|
# Adding field 'Group.email' |
||||||
|
db.add_column(u'aldryn_people_group', 'email', |
||||||
|
self.gf('django.db.models.fields.EmailField')(default='', max_length=75, blank=True), |
||||||
|
keep_default=False) |
||||||
|
|
||||||
|
|
||||||
|
def backwards(self, orm): |
||||||
|
# Deleting field 'Group.email' |
||||||
|
db.delete_column(u'aldryn_people_group', 'email') |
||||||
|
|
||||||
|
|
||||||
|
models = { |
||||||
|
u'aldryn_people.group': { |
||||||
|
'Meta': {'object_name': 'Group'}, |
||||||
|
'address': ('django.db.models.fields.TextField', [], {'blank': 'True'}), |
||||||
|
'city': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'default': "''", 'max_length': '75', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'phone': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.grouptranslation': { |
||||||
|
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'GroupTranslation', 'db_table': "u'aldryn_people_group_translation'"}, |
||||||
|
'company_description': ('djangocms_text_ckeditor.fields.HTMLField', [], {'blank': 'True'}), |
||||||
|
'company_name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['aldryn_people.Group']"}) |
||||||
|
}, |
||||||
|
u'aldryn_people.peopleplugin': { |
||||||
|
'Meta': {'object_name': 'PeoplePlugin', '_ormbases': ['cms.CMSPlugin']}, |
||||||
|
u'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'group_by_group': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'people': ('sortedm2m.fields.SortedManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['aldryn_people.Person']", 'null': 'True', 'blank': 'True'}), |
||||||
|
'show_links': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'style': ('django.db.models.fields.CharField', [], {'default': "'standard'", 'max_length': '50'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.person': { |
||||||
|
'Meta': {'object_name': 'Person'}, |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'default': "''", 'max_length': '75', 'blank': 'True'}), |
||||||
|
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['aldryn_people.Group']", 'null': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'mobile': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
'phone': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'slug': ('django.db.models.fields.CharField', [], {'max_length': '255', 'unique': 'True', 'null': 'True', 'blank': 'True'}), |
||||||
|
'visual': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['filer.Image']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.persontranslation': { |
||||||
|
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'PersonTranslation', 'db_table': "u'aldryn_people_person_translation'"}, |
||||||
|
'comment': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), |
||||||
|
'function': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['aldryn_people.Person']"}) |
||||||
|
}, |
||||||
|
u'auth.group': { |
||||||
|
'Meta': {'object_name': 'Group'}, |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), |
||||||
|
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'auth.permission': { |
||||||
|
'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'}, |
||||||
|
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) |
||||||
|
}, |
||||||
|
u'auth.user': { |
||||||
|
'Meta': {'object_name': 'User'}, |
||||||
|
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), |
||||||
|
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
||||||
|
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
||||||
|
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), |
||||||
|
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), |
||||||
|
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) |
||||||
|
}, |
||||||
|
'cms.cmsplugin': { |
||||||
|
'Meta': {'object_name': 'CMSPlugin'}, |
||||||
|
'changed_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}), |
||||||
|
'placeholder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}), |
||||||
|
'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}), |
||||||
|
'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) |
||||||
|
}, |
||||||
|
'cms.placeholder': { |
||||||
|
'Meta': {'object_name': 'Placeholder'}, |
||||||
|
'default_width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) |
||||||
|
}, |
||||||
|
u'contenttypes.contenttype': { |
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, |
||||||
|
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) |
||||||
|
}, |
||||||
|
'filer.file': { |
||||||
|
'Meta': {'object_name': 'File'}, |
||||||
|
'_file_size': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'file': ('django.db.models.fields.files.FileField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'folder': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'all_files'", 'null': 'True', 'to': "orm['filer.Folder']"}), |
||||||
|
'has_all_mandatory_data': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), |
||||||
|
'original_filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'owned_files'", 'null': 'True', 'to': u"orm['auth.User']"}), |
||||||
|
'polymorphic_ctype': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'polymorphic_filer.file_set'", 'null': 'True', 'to': u"orm['contenttypes.ContentType']"}), |
||||||
|
'sha1': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '40', 'blank': 'True'}), |
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
'filer.folder': { |
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('parent', 'name'),)", 'object_name': 'Folder'}, |
||||||
|
'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
u'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
u'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'filer_owned_folders'", 'null': 'True', 'to': u"orm['auth.User']"}), |
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['filer.Folder']"}), |
||||||
|
u'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
u'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
'filer.image': { |
||||||
|
'Meta': {'object_name': 'Image', '_ormbases': ['filer.File']}, |
||||||
|
'_height': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'_width': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'author': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'date_taken': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'default_alt_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'default_caption': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
u'file_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['filer.File']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'must_always_publish_author_credit': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'must_always_publish_copyright': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'subject_location': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '64', 'null': 'True', 'blank': 'True'}) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
complete_apps = ['aldryn_people'] |
||||||
@ -0,0 +1,164 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
from south.utils import datetime_utils as datetime |
||||||
|
from south.db import db |
||||||
|
from south.v2 import SchemaMigration |
||||||
|
from django.db import models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(SchemaMigration): |
||||||
|
|
||||||
|
def forwards(self, orm): |
||||||
|
db.rename_column('aldryn_people_person_translation', 'comment', 'description') |
||||||
|
|
||||||
|
def backwards(self, orm): |
||||||
|
db.rename_column('aldryn_people_person_translation', 'description', 'comment') |
||||||
|
|
||||||
|
models = { |
||||||
|
u'aldryn_people.group': { |
||||||
|
'Meta': {'object_name': 'Group'}, |
||||||
|
'address': ('django.db.models.fields.TextField', [], {'blank': 'True'}), |
||||||
|
'city': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'default': "''", 'max_length': '75', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'phone': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.grouptranslation': { |
||||||
|
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'GroupTranslation', 'db_table': "u'aldryn_people_group_translation'"}, |
||||||
|
'company_description': ('djangocms_text_ckeditor.fields.HTMLField', [], {'blank': 'True'}), |
||||||
|
'company_name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['aldryn_people.Group']"}) |
||||||
|
}, |
||||||
|
u'aldryn_people.peopleplugin': { |
||||||
|
'Meta': {'object_name': 'PeoplePlugin', '_ormbases': ['cms.CMSPlugin']}, |
||||||
|
u'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'group_by_group': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'people': ('sortedm2m.fields.SortedManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['aldryn_people.Person']", 'null': 'True', 'blank': 'True'}), |
||||||
|
'show_links': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'style': ('django.db.models.fields.CharField', [], {'default': "'standard'", 'max_length': '50'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.person': { |
||||||
|
'Meta': {'object_name': 'Person'}, |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'default': "''", 'max_length': '75', 'blank': 'True'}), |
||||||
|
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['aldryn_people.Group']", 'null': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'mobile': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
'phone': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'slug': ('django.db.models.fields.CharField', [], {'max_length': '255', 'unique': 'True', 'null': 'True', 'blank': 'True'}), |
||||||
|
'visual': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['filer.Image']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.persontranslation': { |
||||||
|
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'PersonTranslation', 'db_table': "u'aldryn_people_person_translation'"}, |
||||||
|
'description': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), |
||||||
|
'function': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['aldryn_people.Person']"}) |
||||||
|
}, |
||||||
|
u'auth.group': { |
||||||
|
'Meta': {'object_name': 'Group'}, |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), |
||||||
|
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'auth.permission': { |
||||||
|
'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'}, |
||||||
|
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) |
||||||
|
}, |
||||||
|
u'auth.user': { |
||||||
|
'Meta': {'object_name': 'User'}, |
||||||
|
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), |
||||||
|
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
||||||
|
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
||||||
|
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), |
||||||
|
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), |
||||||
|
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) |
||||||
|
}, |
||||||
|
'cms.cmsplugin': { |
||||||
|
'Meta': {'object_name': 'CMSPlugin'}, |
||||||
|
'changed_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}), |
||||||
|
'placeholder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}), |
||||||
|
'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}), |
||||||
|
'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) |
||||||
|
}, |
||||||
|
'cms.placeholder': { |
||||||
|
'Meta': {'object_name': 'Placeholder'}, |
||||||
|
'default_width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) |
||||||
|
}, |
||||||
|
u'contenttypes.contenttype': { |
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, |
||||||
|
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) |
||||||
|
}, |
||||||
|
'filer.file': { |
||||||
|
'Meta': {'object_name': 'File'}, |
||||||
|
'_file_size': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'file': ('django.db.models.fields.files.FileField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'folder': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'all_files'", 'null': 'True', 'to': "orm['filer.Folder']"}), |
||||||
|
'has_all_mandatory_data': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), |
||||||
|
'original_filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'owned_files'", 'null': 'True', 'to': u"orm['auth.User']"}), |
||||||
|
'polymorphic_ctype': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'polymorphic_filer.file_set'", 'null': 'True', 'to': u"orm['contenttypes.ContentType']"}), |
||||||
|
'sha1': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '40', 'blank': 'True'}), |
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
'filer.folder': { |
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('parent', 'name'),)", 'object_name': 'Folder'}, |
||||||
|
'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
u'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
u'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'filer_owned_folders'", 'null': 'True', 'to': u"orm['auth.User']"}), |
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['filer.Folder']"}), |
||||||
|
u'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
u'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
'filer.image': { |
||||||
|
'Meta': {'object_name': 'Image', '_ormbases': ['filer.File']}, |
||||||
|
'_height': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'_width': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'author': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'date_taken': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'default_alt_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'default_caption': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
u'file_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['filer.File']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'must_always_publish_author_credit': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'must_always_publish_copyright': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'subject_location': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '64', 'null': 'True', 'blank': 'True'}) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
complete_apps = ['aldryn_people'] |
||||||
@ -0,0 +1,171 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
import datetime |
||||||
|
from south.db import db |
||||||
|
from south.v2 import SchemaMigration |
||||||
|
from django.db import models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(SchemaMigration): |
||||||
|
|
||||||
|
def forwards(self, orm): |
||||||
|
# Adding field 'Person.vcard_enabled' |
||||||
|
db.add_column(u'aldryn_people_person', 'vcard_enabled', |
||||||
|
self.gf('django.db.models.fields.BooleanField')(default=True), |
||||||
|
keep_default=False) |
||||||
|
|
||||||
|
|
||||||
|
def backwards(self, orm): |
||||||
|
# Deleting field 'Person.vcard_enabled' |
||||||
|
db.delete_column(u'aldryn_people_person', 'vcard_enabled') |
||||||
|
|
||||||
|
|
||||||
|
models = { |
||||||
|
u'aldryn_people.group': { |
||||||
|
'Meta': {'object_name': 'Group'}, |
||||||
|
'address': ('django.db.models.fields.TextField', [], {'blank': 'True'}), |
||||||
|
'city': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'default': "''", 'max_length': '75', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'phone': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.grouptranslation': { |
||||||
|
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'GroupTranslation', 'db_table': "u'aldryn_people_group_translation'"}, |
||||||
|
'company_description': ('djangocms_text_ckeditor.fields.HTMLField', [], {'blank': 'True'}), |
||||||
|
'company_name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['aldryn_people.Group']"}) |
||||||
|
}, |
||||||
|
u'aldryn_people.peopleplugin': { |
||||||
|
'Meta': {'object_name': 'PeoplePlugin', '_ormbases': ['cms.CMSPlugin']}, |
||||||
|
u'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'group_by_group': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'people': ('sortedm2m.fields.SortedManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['aldryn_people.Person']", 'null': 'True', 'blank': 'True'}), |
||||||
|
'show_links': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'style': ('django.db.models.fields.CharField', [], {'default': "'standard'", 'max_length': '50'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.person': { |
||||||
|
'Meta': {'object_name': 'Person'}, |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'default': "''", 'max_length': '75', 'blank': 'True'}), |
||||||
|
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['aldryn_people.Group']", 'null': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'mobile': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
'phone': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'slug': ('django.db.models.fields.CharField', [], {'max_length': '255', 'unique': 'True', 'null': 'True', 'blank': 'True'}), |
||||||
|
'vcard_enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'visual': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['filer.Image']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.persontranslation': { |
||||||
|
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'PersonTranslation', 'db_table': "u'aldryn_people_person_translation'"}, |
||||||
|
'description': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), |
||||||
|
'function': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['aldryn_people.Person']"}) |
||||||
|
}, |
||||||
|
u'auth.group': { |
||||||
|
'Meta': {'object_name': 'Group'}, |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), |
||||||
|
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'auth.permission': { |
||||||
|
'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'}, |
||||||
|
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) |
||||||
|
}, |
||||||
|
u'auth.user': { |
||||||
|
'Meta': {'object_name': 'User'}, |
||||||
|
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), |
||||||
|
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
||||||
|
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
||||||
|
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), |
||||||
|
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), |
||||||
|
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) |
||||||
|
}, |
||||||
|
'cms.cmsplugin': { |
||||||
|
'Meta': {'object_name': 'CMSPlugin'}, |
||||||
|
'changed_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}), |
||||||
|
'placeholder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}), |
||||||
|
'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}), |
||||||
|
'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) |
||||||
|
}, |
||||||
|
'cms.placeholder': { |
||||||
|
'Meta': {'object_name': 'Placeholder'}, |
||||||
|
'default_width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) |
||||||
|
}, |
||||||
|
u'contenttypes.contenttype': { |
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, |
||||||
|
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) |
||||||
|
}, |
||||||
|
'filer.file': { |
||||||
|
'Meta': {'object_name': 'File'}, |
||||||
|
'_file_size': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'file': ('django.db.models.fields.files.FileField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'folder': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'all_files'", 'null': 'True', 'to': "orm['filer.Folder']"}), |
||||||
|
'has_all_mandatory_data': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), |
||||||
|
'original_filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'owned_files'", 'null': 'True', 'to': u"orm['auth.User']"}), |
||||||
|
'polymorphic_ctype': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'polymorphic_filer.file_set'", 'null': 'True', 'to': u"orm['contenttypes.ContentType']"}), |
||||||
|
'sha1': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '40', 'blank': 'True'}), |
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
'filer.folder': { |
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('parent', 'name'),)", 'object_name': 'Folder'}, |
||||||
|
'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'filer_owned_folders'", 'null': 'True', 'to': u"orm['auth.User']"}), |
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['filer.Folder']"}), |
||||||
|
'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
'filer.image': { |
||||||
|
'Meta': {'object_name': 'Image', '_ormbases': ['filer.File']}, |
||||||
|
'_height': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'_width': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'author': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'date_taken': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'default_alt_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'default_caption': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
u'file_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['filer.File']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'must_always_publish_author_credit': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'must_always_publish_copyright': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'subject_location': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '64', 'null': 'True', 'blank': 'True'}) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
complete_apps = ['aldryn_people'] |
||||||
@ -0,0 +1,172 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
import datetime |
||||||
|
from south.db import db |
||||||
|
from south.v2 import SchemaMigration |
||||||
|
from django.db import models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(SchemaMigration): |
||||||
|
|
||||||
|
def forwards(self, orm): |
||||||
|
# Adding field 'PeoplePlugin.show_vcard' |
||||||
|
db.add_column(u'aldryn_people_peopleplugin', 'show_vcard', |
||||||
|
self.gf('django.db.models.fields.BooleanField')(default=False), |
||||||
|
keep_default=False) |
||||||
|
|
||||||
|
|
||||||
|
def backwards(self, orm): |
||||||
|
# Deleting field 'PeoplePlugin.show_vcard' |
||||||
|
db.delete_column(u'aldryn_people_peopleplugin', 'show_vcard') |
||||||
|
|
||||||
|
|
||||||
|
models = { |
||||||
|
u'aldryn_people.group': { |
||||||
|
'Meta': {'object_name': 'Group'}, |
||||||
|
'address': ('django.db.models.fields.TextField', [], {'blank': 'True'}), |
||||||
|
'city': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'default': "''", 'max_length': '75', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'phone': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.grouptranslation': { |
||||||
|
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'GroupTranslation', 'db_table': "u'aldryn_people_group_translation'"}, |
||||||
|
'company_description': ('djangocms_text_ckeditor.fields.HTMLField', [], {'blank': 'True'}), |
||||||
|
'company_name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['aldryn_people.Group']"}) |
||||||
|
}, |
||||||
|
u'aldryn_people.peopleplugin': { |
||||||
|
'Meta': {'object_name': 'PeoplePlugin', '_ormbases': ['cms.CMSPlugin']}, |
||||||
|
u'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'group_by_group': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'people': ('sortedm2m.fields.SortedManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['aldryn_people.Person']", 'null': 'True', 'blank': 'True'}), |
||||||
|
'show_links': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'show_vcard': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'style': ('django.db.models.fields.CharField', [], {'default': "'standard'", 'max_length': '50'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.person': { |
||||||
|
'Meta': {'object_name': 'Person'}, |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'default': "''", 'max_length': '75', 'blank': 'True'}), |
||||||
|
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['aldryn_people.Group']", 'null': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'mobile': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
'phone': ('phonenumber_field.modelfields.PhoneNumberField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), |
||||||
|
'slug': ('django.db.models.fields.CharField', [], {'max_length': '255', 'unique': 'True', 'null': 'True', 'blank': 'True'}), |
||||||
|
'vcard_enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'visual': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['filer.Image']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.persontranslation': { |
||||||
|
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'PersonTranslation', 'db_table': "u'aldryn_people_person_translation'"}, |
||||||
|
'description': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), |
||||||
|
'function': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['aldryn_people.Person']"}) |
||||||
|
}, |
||||||
|
u'auth.group': { |
||||||
|
'Meta': {'object_name': 'Group'}, |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), |
||||||
|
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'auth.permission': { |
||||||
|
'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'}, |
||||||
|
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) |
||||||
|
}, |
||||||
|
u'auth.user': { |
||||||
|
'Meta': {'object_name': 'User'}, |
||||||
|
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), |
||||||
|
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
||||||
|
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
||||||
|
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), |
||||||
|
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), |
||||||
|
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) |
||||||
|
}, |
||||||
|
'cms.cmsplugin': { |
||||||
|
'Meta': {'object_name': 'CMSPlugin'}, |
||||||
|
'changed_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}), |
||||||
|
'placeholder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}), |
||||||
|
'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}), |
||||||
|
'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) |
||||||
|
}, |
||||||
|
'cms.placeholder': { |
||||||
|
'Meta': {'object_name': 'Placeholder'}, |
||||||
|
'default_width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) |
||||||
|
}, |
||||||
|
u'contenttypes.contenttype': { |
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, |
||||||
|
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) |
||||||
|
}, |
||||||
|
'filer.file': { |
||||||
|
'Meta': {'object_name': 'File'}, |
||||||
|
'_file_size': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'file': ('django.db.models.fields.files.FileField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'folder': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'all_files'", 'null': 'True', 'to': "orm['filer.Folder']"}), |
||||||
|
'has_all_mandatory_data': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), |
||||||
|
'original_filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'owned_files'", 'null': 'True', 'to': u"orm['auth.User']"}), |
||||||
|
'polymorphic_ctype': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'polymorphic_filer.file_set'", 'null': 'True', 'to': u"orm['contenttypes.ContentType']"}), |
||||||
|
'sha1': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '40', 'blank': 'True'}), |
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
'filer.folder': { |
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('parent', 'name'),)", 'object_name': 'Folder'}, |
||||||
|
'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'filer_owned_folders'", 'null': 'True', 'to': u"orm['auth.User']"}), |
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['filer.Folder']"}), |
||||||
|
'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
'filer.image': { |
||||||
|
'Meta': {'object_name': 'Image', '_ormbases': ['filer.File']}, |
||||||
|
'_height': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'_width': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'author': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'date_taken': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'default_alt_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'default_caption': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
u'file_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['filer.File']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'must_always_publish_author_credit': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'must_always_publish_copyright': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'subject_location': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '64', 'null': 'True', 'blank': 'True'}) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
complete_apps = ['aldryn_people'] |
||||||
@ -0,0 +1,182 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
from south.utils import datetime_utils as datetime |
||||||
|
from south.db import db |
||||||
|
from south.v2 import SchemaMigration |
||||||
|
from django.db import models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(SchemaMigration): |
||||||
|
|
||||||
|
def forwards(self, orm): |
||||||
|
|
||||||
|
# Changing field 'Group.phone' |
||||||
|
db.alter_column(u'aldryn_people_group', 'phone', self.gf('django.db.models.fields.CharField')(max_length=100, null=True)) |
||||||
|
|
||||||
|
# Changing field 'Person.mobile' |
||||||
|
db.alter_column(u'aldryn_people_person', 'mobile', self.gf('django.db.models.fields.CharField')(max_length=100, null=True)) |
||||||
|
|
||||||
|
# Changing field 'Person.phone' |
||||||
|
db.alter_column(u'aldryn_people_person', 'phone', self.gf('django.db.models.fields.CharField')(max_length=100, null=True)) |
||||||
|
|
||||||
|
def backwards(self, orm): |
||||||
|
|
||||||
|
# Changing field 'Group.phone' |
||||||
|
db.alter_column(u'aldryn_people_group', 'phone', self.gf('phonenumber_field.modelfields.PhoneNumberField')(max_length=128, null=True)) |
||||||
|
|
||||||
|
# Changing field 'Person.mobile' |
||||||
|
db.alter_column(u'aldryn_people_person', 'mobile', self.gf('phonenumber_field.modelfields.PhoneNumberField')(max_length=128, null=True)) |
||||||
|
|
||||||
|
# Changing field 'Person.phone' |
||||||
|
db.alter_column(u'aldryn_people_person', 'phone', self.gf('phonenumber_field.modelfields.PhoneNumberField')(max_length=128, null=True)) |
||||||
|
|
||||||
|
models = { |
||||||
|
u'aldryn_people.group': { |
||||||
|
'Meta': {'object_name': 'Group'}, |
||||||
|
'address': ('django.db.models.fields.TextField', [], {'blank': 'True'}), |
||||||
|
'city': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'default': "''", 'max_length': '75', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'phone': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), |
||||||
|
'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.grouptranslation': { |
||||||
|
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'GroupTranslation', 'db_table': "u'aldryn_people_group_translation'"}, |
||||||
|
'company_description': ('djangocms_text_ckeditor.fields.HTMLField', [], {'blank': 'True'}), |
||||||
|
'company_name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['aldryn_people.Group']"}) |
||||||
|
}, |
||||||
|
u'aldryn_people.peopleplugin': { |
||||||
|
'Meta': {'object_name': 'PeoplePlugin', '_ormbases': ['cms.CMSPlugin']}, |
||||||
|
u'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'group_by_group': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'people': ('sortedm2m.fields.SortedManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['aldryn_people.Person']", 'null': 'True', 'blank': 'True'}), |
||||||
|
'show_links': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'show_vcard': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'style': ('django.db.models.fields.CharField', [], {'default': "'standard'", 'max_length': '50'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.person': { |
||||||
|
'Meta': {'object_name': 'Person'}, |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'default': "''", 'max_length': '75', 'blank': 'True'}), |
||||||
|
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['aldryn_people.Group']", 'null': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'mobile': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
'phone': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), |
||||||
|
'slug': ('django.db.models.fields.CharField', [], {'max_length': '255', 'unique': 'True', 'null': 'True', 'blank': 'True'}), |
||||||
|
'vcard_enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'visual': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['filer.Image']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.persontranslation': { |
||||||
|
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'PersonTranslation', 'db_table': "u'aldryn_people_person_translation'"}, |
||||||
|
'description': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), |
||||||
|
'function': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['aldryn_people.Person']"}) |
||||||
|
}, |
||||||
|
u'auth.group': { |
||||||
|
'Meta': {'object_name': 'Group'}, |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), |
||||||
|
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'auth.permission': { |
||||||
|
'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'}, |
||||||
|
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) |
||||||
|
}, |
||||||
|
u'auth.user': { |
||||||
|
'Meta': {'object_name': 'User'}, |
||||||
|
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), |
||||||
|
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
||||||
|
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
||||||
|
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), |
||||||
|
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), |
||||||
|
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) |
||||||
|
}, |
||||||
|
'cms.cmsplugin': { |
||||||
|
'Meta': {'object_name': 'CMSPlugin'}, |
||||||
|
'changed_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}), |
||||||
|
'placeholder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}), |
||||||
|
'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}), |
||||||
|
'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) |
||||||
|
}, |
||||||
|
'cms.placeholder': { |
||||||
|
'Meta': {'object_name': 'Placeholder'}, |
||||||
|
'default_width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) |
||||||
|
}, |
||||||
|
u'contenttypes.contenttype': { |
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, |
||||||
|
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) |
||||||
|
}, |
||||||
|
'filer.file': { |
||||||
|
'Meta': {'object_name': 'File'}, |
||||||
|
'_file_size': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'file': ('django.db.models.fields.files.FileField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'folder': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'all_files'", 'null': 'True', 'to': "orm['filer.Folder']"}), |
||||||
|
'has_all_mandatory_data': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), |
||||||
|
'original_filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'owned_files'", 'null': 'True', 'to': u"orm['auth.User']"}), |
||||||
|
'polymorphic_ctype': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'polymorphic_filer.file_set'", 'null': 'True', 'to': u"orm['contenttypes.ContentType']"}), |
||||||
|
'sha1': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '40', 'blank': 'True'}), |
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
'filer.folder': { |
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('parent', 'name'),)", 'object_name': 'Folder'}, |
||||||
|
'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
u'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
u'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'filer_owned_folders'", 'null': 'True', 'to': u"orm['auth.User']"}), |
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['filer.Folder']"}), |
||||||
|
u'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
u'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
'filer.image': { |
||||||
|
'Meta': {'object_name': 'Image', '_ormbases': ['filer.File']}, |
||||||
|
'_height': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'_width': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'author': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'date_taken': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'default_alt_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'default_caption': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
u'file_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['filer.File']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'must_always_publish_author_credit': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'must_always_publish_copyright': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'subject_location': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '64', 'null': 'True', 'blank': 'True'}) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
complete_apps = ['aldryn_people'] |
||||||
@ -0,0 +1,200 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
import datetime |
||||||
|
from south.db import db |
||||||
|
from south.v2 import SchemaMigration |
||||||
|
from django.db import models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(SchemaMigration): |
||||||
|
|
||||||
|
def forwards(self, orm): |
||||||
|
# Adding field 'Group.fax' |
||||||
|
db.add_column(u'aldryn_people_group', 'fax', |
||||||
|
self.gf('django.db.models.fields.CharField')(max_length=100, null=True, blank=True), |
||||||
|
keep_default=False) |
||||||
|
|
||||||
|
# Adding field 'Group.website' |
||||||
|
db.add_column(u'aldryn_people_group', 'website', |
||||||
|
self.gf('django.db.models.fields.URLField')(max_length=200, null=True, blank=True), |
||||||
|
keep_default=False) |
||||||
|
|
||||||
|
# Adding field 'Person.fax' |
||||||
|
db.add_column(u'aldryn_people_person', 'fax', |
||||||
|
self.gf('django.db.models.fields.CharField')(max_length=100, null=True, blank=True), |
||||||
|
keep_default=False) |
||||||
|
|
||||||
|
# Adding field 'Person.website' |
||||||
|
db.add_column(u'aldryn_people_person', 'website', |
||||||
|
self.gf('django.db.models.fields.URLField')(max_length=200, null=True, blank=True), |
||||||
|
keep_default=False) |
||||||
|
|
||||||
|
|
||||||
|
def backwards(self, orm): |
||||||
|
# Deleting field 'Group.fax' |
||||||
|
db.delete_column(u'aldryn_people_group', 'fax') |
||||||
|
|
||||||
|
# Deleting field 'Group.website' |
||||||
|
db.delete_column(u'aldryn_people_group', 'website') |
||||||
|
|
||||||
|
# Deleting field 'Person.fax' |
||||||
|
db.delete_column(u'aldryn_people_person', 'fax') |
||||||
|
|
||||||
|
# Deleting field 'Person.website' |
||||||
|
db.delete_column(u'aldryn_people_person', 'website') |
||||||
|
|
||||||
|
|
||||||
|
models = { |
||||||
|
u'aldryn_people.group': { |
||||||
|
'Meta': {'object_name': 'Group'}, |
||||||
|
'address': ('django.db.models.fields.TextField', [], {'blank': 'True'}), |
||||||
|
'city': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'default': "''", 'max_length': '75', 'blank': 'True'}), |
||||||
|
'fax': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'phone': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), |
||||||
|
'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}), |
||||||
|
'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.grouptranslation': { |
||||||
|
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'GroupTranslation', 'db_table': "u'aldryn_people_group_translation'"}, |
||||||
|
'company_description': ('djangocms_text_ckeditor.fields.HTMLField', [], {'blank': 'True'}), |
||||||
|
'company_name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['aldryn_people.Group']"}) |
||||||
|
}, |
||||||
|
u'aldryn_people.peopleplugin': { |
||||||
|
'Meta': {'object_name': 'PeoplePlugin', '_ormbases': ['cms.CMSPlugin']}, |
||||||
|
u'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'group_by_group': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'people': ('sortedm2m.fields.SortedManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['aldryn_people.Person']", 'null': 'True', 'blank': 'True'}), |
||||||
|
'show_links': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'show_vcard': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'style': ('django.db.models.fields.CharField', [], {'default': "'standard'", 'max_length': '50'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.person': { |
||||||
|
'Meta': {'object_name': 'Person'}, |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'default': "''", 'max_length': '75', 'blank': 'True'}), |
||||||
|
'fax': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), |
||||||
|
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['aldryn_people.Group']", 'null': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'mobile': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
'phone': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), |
||||||
|
'slug': ('django.db.models.fields.CharField', [], {'max_length': '255', 'unique': 'True', 'null': 'True', 'blank': 'True'}), |
||||||
|
'vcard_enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'visual': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['filer.Image']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}), |
||||||
|
'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.persontranslation': { |
||||||
|
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'PersonTranslation', 'db_table': "u'aldryn_people_person_translation'"}, |
||||||
|
'description': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), |
||||||
|
'function': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['aldryn_people.Person']"}) |
||||||
|
}, |
||||||
|
u'auth.group': { |
||||||
|
'Meta': {'object_name': 'Group'}, |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), |
||||||
|
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'auth.permission': { |
||||||
|
'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'}, |
||||||
|
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) |
||||||
|
}, |
||||||
|
u'auth.user': { |
||||||
|
'Meta': {'object_name': 'User'}, |
||||||
|
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), |
||||||
|
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
||||||
|
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
||||||
|
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), |
||||||
|
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), |
||||||
|
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) |
||||||
|
}, |
||||||
|
'cms.cmsplugin': { |
||||||
|
'Meta': {'object_name': 'CMSPlugin'}, |
||||||
|
'changed_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}), |
||||||
|
'placeholder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}), |
||||||
|
'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}), |
||||||
|
'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) |
||||||
|
}, |
||||||
|
'cms.placeholder': { |
||||||
|
'Meta': {'object_name': 'Placeholder'}, |
||||||
|
'default_width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) |
||||||
|
}, |
||||||
|
u'contenttypes.contenttype': { |
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, |
||||||
|
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) |
||||||
|
}, |
||||||
|
'filer.file': { |
||||||
|
'Meta': {'object_name': 'File'}, |
||||||
|
'_file_size': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'file': ('django.db.models.fields.files.FileField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'folder': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'all_files'", 'null': 'True', 'to': "orm['filer.Folder']"}), |
||||||
|
'has_all_mandatory_data': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), |
||||||
|
'original_filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'owned_files'", 'null': 'True', 'to': u"orm['auth.User']"}), |
||||||
|
'polymorphic_ctype': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'polymorphic_filer.file_set'", 'null': 'True', 'to': u"orm['contenttypes.ContentType']"}), |
||||||
|
'sha1': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '40', 'blank': 'True'}), |
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
'filer.folder': { |
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('parent', 'name'),)", 'object_name': 'Folder'}, |
||||||
|
'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'filer_owned_folders'", 'null': 'True', 'to': u"orm['auth.User']"}), |
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['filer.Folder']"}), |
||||||
|
'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
'filer.image': { |
||||||
|
'Meta': {'object_name': 'Image', '_ormbases': ['filer.File']}, |
||||||
|
'_height': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'_width': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'author': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'date_taken': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'default_alt_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'default_caption': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
u'file_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['filer.File']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'must_always_publish_author_credit': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'must_always_publish_copyright': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'subject_location': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '64', 'null': 'True', 'blank': 'True'}) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
complete_apps = ['aldryn_people'] |
||||||
@ -0,0 +1,177 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
import datetime |
||||||
|
from south.db import db |
||||||
|
from south.v2 import SchemaMigration |
||||||
|
from django.db import models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(SchemaMigration): |
||||||
|
|
||||||
|
def forwards(self, orm): |
||||||
|
# Adding field 'Person.user' |
||||||
|
db.add_column(u'aldryn_people_person', 'user', |
||||||
|
self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'], unique=True, null=True, blank=True), |
||||||
|
keep_default=False) |
||||||
|
|
||||||
|
|
||||||
|
def backwards(self, orm): |
||||||
|
# Deleting field 'Person.user' |
||||||
|
db.delete_column(u'aldryn_people_person', 'user_id') |
||||||
|
|
||||||
|
|
||||||
|
models = { |
||||||
|
u'aldryn_people.group': { |
||||||
|
'Meta': {'object_name': 'Group'}, |
||||||
|
'address': ('django.db.models.fields.TextField', [], {'blank': 'True'}), |
||||||
|
'city': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'default': "''", 'max_length': '75', 'blank': 'True'}), |
||||||
|
'fax': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'phone': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), |
||||||
|
'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}), |
||||||
|
'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.grouptranslation': { |
||||||
|
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'GroupTranslation', 'db_table': "u'aldryn_people_group_translation'"}, |
||||||
|
'company_description': ('djangocms_text_ckeditor.fields.HTMLField', [], {'blank': 'True'}), |
||||||
|
'company_name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['aldryn_people.Group']"}) |
||||||
|
}, |
||||||
|
u'aldryn_people.peopleplugin': { |
||||||
|
'Meta': {'object_name': 'PeoplePlugin', '_ormbases': ['cms.CMSPlugin']}, |
||||||
|
u'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'group_by_group': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'people': ('sortedm2m.fields.SortedManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['aldryn_people.Person']", 'null': 'True', 'blank': 'True'}), |
||||||
|
'show_links': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'show_vcard': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'style': ('django.db.models.fields.CharField', [], {'default': "'standard'", 'max_length': '50'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.person': { |
||||||
|
'Meta': {'object_name': 'Person'}, |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'default': "''", 'max_length': '75', 'blank': 'True'}), |
||||||
|
'fax': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), |
||||||
|
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['aldryn_people.Group']", 'null': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'mobile': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
'phone': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), |
||||||
|
'slug': ('django.db.models.fields.CharField', [], {'max_length': '255', 'unique': 'True', 'null': 'True', 'blank': 'True'}), |
||||||
|
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['auth.User']", 'unique': 'True', 'null': 'True', 'blank': 'True'}), |
||||||
|
'vcard_enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'visual': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['filer.Image']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}), |
||||||
|
'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.persontranslation': { |
||||||
|
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'PersonTranslation', 'db_table': "u'aldryn_people_person_translation'"}, |
||||||
|
'description': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), |
||||||
|
'function': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['aldryn_people.Person']"}) |
||||||
|
}, |
||||||
|
u'auth.group': { |
||||||
|
'Meta': {'object_name': 'Group'}, |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), |
||||||
|
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'auth.permission': { |
||||||
|
'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'}, |
||||||
|
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) |
||||||
|
}, |
||||||
|
u'auth.user': { |
||||||
|
'Meta': {'object_name': 'User'}, |
||||||
|
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), |
||||||
|
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
||||||
|
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
||||||
|
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), |
||||||
|
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), |
||||||
|
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) |
||||||
|
}, |
||||||
|
'cms.cmsplugin': { |
||||||
|
'Meta': {'object_name': 'CMSPlugin'}, |
||||||
|
'changed_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}), |
||||||
|
'placeholder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}), |
||||||
|
'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}), |
||||||
|
'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) |
||||||
|
}, |
||||||
|
'cms.placeholder': { |
||||||
|
'Meta': {'object_name': 'Placeholder'}, |
||||||
|
'default_width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) |
||||||
|
}, |
||||||
|
u'contenttypes.contenttype': { |
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, |
||||||
|
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) |
||||||
|
}, |
||||||
|
'filer.file': { |
||||||
|
'Meta': {'object_name': 'File'}, |
||||||
|
'_file_size': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'file': ('django.db.models.fields.files.FileField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'folder': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'all_files'", 'null': 'True', 'to': "orm['filer.Folder']"}), |
||||||
|
'has_all_mandatory_data': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), |
||||||
|
'original_filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'owned_files'", 'null': 'True', 'to': u"orm['auth.User']"}), |
||||||
|
'polymorphic_ctype': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'polymorphic_filer.file_set'", 'null': 'True', 'to': u"orm['contenttypes.ContentType']"}), |
||||||
|
'sha1': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '40', 'blank': 'True'}), |
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
'filer.folder': { |
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('parent', 'name'),)", 'object_name': 'Folder'}, |
||||||
|
'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'filer_owned_folders'", 'null': 'True', 'to': u"orm['auth.User']"}), |
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['filer.Folder']"}), |
||||||
|
'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
'filer.image': { |
||||||
|
'Meta': {'object_name': 'Image', '_ormbases': ['filer.File']}, |
||||||
|
'_height': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'_width': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'author': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'date_taken': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'default_alt_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'default_caption': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
u'file_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['filer.File']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'must_always_publish_author_credit': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'must_always_publish_copyright': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'subject_location': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '64', 'null': 'True', 'blank': 'True'}) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
complete_apps = ['aldryn_people'] |
||||||
@ -0,0 +1,175 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
from south.utils import datetime_utils as datetime |
||||||
|
from south.db import db |
||||||
|
from south.v2 import SchemaMigration |
||||||
|
from django.db import models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(SchemaMigration): |
||||||
|
|
||||||
|
def forwards(self, orm): |
||||||
|
|
||||||
|
# Changing field 'PersonTranslation.description' |
||||||
|
db.alter_column(u'aldryn_people_person_translation', 'description', self.gf('djangocms_text_ckeditor.fields.HTMLField')()) |
||||||
|
|
||||||
|
def backwards(self, orm): |
||||||
|
|
||||||
|
# Changing field 'PersonTranslation.description' |
||||||
|
db.alter_column(u'aldryn_people_person_translation', 'description', self.gf('django.db.models.fields.TextField')()) |
||||||
|
|
||||||
|
models = { |
||||||
|
u'aldryn_people.group': { |
||||||
|
'Meta': {'object_name': 'Group'}, |
||||||
|
'address': ('django.db.models.fields.TextField', [], {'blank': 'True'}), |
||||||
|
'city': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'default': "''", 'max_length': '75', 'blank': 'True'}), |
||||||
|
'fax': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'phone': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), |
||||||
|
'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}), |
||||||
|
'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.grouptranslation': { |
||||||
|
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'GroupTranslation', 'db_table': "u'aldryn_people_group_translation'"}, |
||||||
|
'company_description': ('djangocms_text_ckeditor.fields.HTMLField', [], {'blank': 'True'}), |
||||||
|
'company_name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['aldryn_people.Group']"}) |
||||||
|
}, |
||||||
|
u'aldryn_people.peopleplugin': { |
||||||
|
'Meta': {'object_name': 'PeoplePlugin', '_ormbases': ['cms.CMSPlugin']}, |
||||||
|
u'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'group_by_group': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'people': ('sortedm2m.fields.SortedManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['aldryn_people.Person']", 'null': 'True', 'blank': 'True'}), |
||||||
|
'show_links': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'show_vcard': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'style': ('django.db.models.fields.CharField', [], {'default': "'standard'", 'max_length': '50'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.person': { |
||||||
|
'Meta': {'object_name': 'Person'}, |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'default': "''", 'max_length': '75', 'blank': 'True'}), |
||||||
|
'fax': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), |
||||||
|
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['aldryn_people.Group']", 'null': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'mobile': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
'phone': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), |
||||||
|
'slug': ('django.db.models.fields.CharField', [], {'max_length': '255', 'unique': 'True', 'null': 'True', 'blank': 'True'}), |
||||||
|
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['auth.User']", 'unique': 'True', 'null': 'True', 'blank': 'True'}), |
||||||
|
'vcard_enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'visual': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['filer.Image']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}), |
||||||
|
'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.persontranslation': { |
||||||
|
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'PersonTranslation', 'db_table': "u'aldryn_people_person_translation'"}, |
||||||
|
'description': ('djangocms_text_ckeditor.fields.HTMLField', [], {'default': "''", 'blank': 'True'}), |
||||||
|
'function': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['aldryn_people.Person']"}) |
||||||
|
}, |
||||||
|
u'auth.group': { |
||||||
|
'Meta': {'object_name': 'Group'}, |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), |
||||||
|
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'auth.permission': { |
||||||
|
'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'}, |
||||||
|
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) |
||||||
|
}, |
||||||
|
u'auth.user': { |
||||||
|
'Meta': {'object_name': 'User'}, |
||||||
|
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), |
||||||
|
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
||||||
|
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
||||||
|
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), |
||||||
|
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), |
||||||
|
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) |
||||||
|
}, |
||||||
|
'cms.cmsplugin': { |
||||||
|
'Meta': {'object_name': 'CMSPlugin'}, |
||||||
|
'changed_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}), |
||||||
|
'placeholder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}), |
||||||
|
'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}), |
||||||
|
'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) |
||||||
|
}, |
||||||
|
'cms.placeholder': { |
||||||
|
'Meta': {'object_name': 'Placeholder'}, |
||||||
|
'default_width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) |
||||||
|
}, |
||||||
|
u'contenttypes.contenttype': { |
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, |
||||||
|
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) |
||||||
|
}, |
||||||
|
'filer.file': { |
||||||
|
'Meta': {'object_name': 'File'}, |
||||||
|
'_file_size': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'file': ('django.db.models.fields.files.FileField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'folder': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'all_files'", 'null': 'True', 'to': "orm['filer.Folder']"}), |
||||||
|
'has_all_mandatory_data': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), |
||||||
|
'original_filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'owned_files'", 'null': 'True', 'to': u"orm['auth.User']"}), |
||||||
|
'polymorphic_ctype': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'polymorphic_filer.file_set'", 'null': 'True', 'to': u"orm['contenttypes.ContentType']"}), |
||||||
|
'sha1': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '40', 'blank': 'True'}), |
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
'filer.folder': { |
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('parent', 'name'),)", 'object_name': 'Folder'}, |
||||||
|
'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
u'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
u'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'filer_owned_folders'", 'null': 'True', 'to': u"orm['auth.User']"}), |
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['filer.Folder']"}), |
||||||
|
u'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
u'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
'filer.image': { |
||||||
|
'Meta': {'object_name': 'Image', '_ormbases': ['filer.File']}, |
||||||
|
'_height': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'_width': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'author': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'date_taken': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'default_alt_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'default_caption': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
u'file_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['filer.File']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'must_always_publish_author_credit': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'must_always_publish_copyright': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'subject_location': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '64', 'null': 'True', 'blank': 'True'}) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
complete_apps = ['aldryn_people'] |
||||||
@ -0,0 +1,173 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
from south.utils import datetime_utils as datetime |
||||||
|
from south.db import db |
||||||
|
from south.v2 import SchemaMigration |
||||||
|
from django.db import models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(SchemaMigration): |
||||||
|
|
||||||
|
def forwards(self, orm): |
||||||
|
db.rename_column('aldryn_people_group_translation', 'company_name', 'name') |
||||||
|
db.rename_column('aldryn_people_group_translation', 'company_description', 'description') |
||||||
|
|
||||||
|
def backwards(self, orm): |
||||||
|
db.rename_column('aldryn_people_group_translation', 'name', 'company_name') |
||||||
|
db.rename_column('aldryn_people_group_translation', 'description', 'company_description') |
||||||
|
|
||||||
|
models = { |
||||||
|
u'aldryn_people.group': { |
||||||
|
'Meta': {'object_name': 'Group'}, |
||||||
|
'address': ('django.db.models.fields.TextField', [], {'blank': 'True'}), |
||||||
|
'city': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'default': "''", 'max_length': '75', 'blank': 'True'}), |
||||||
|
'fax': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'phone': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), |
||||||
|
'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}), |
||||||
|
'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.grouptranslation': { |
||||||
|
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'GroupTranslation', 'db_table': "u'aldryn_people_group_translation'"}, |
||||||
|
'description': ('djangocms_text_ckeditor.fields.HTMLField', [], {'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['aldryn_people.Group']"}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.peopleplugin': { |
||||||
|
'Meta': {'object_name': 'PeoplePlugin', '_ormbases': ['cms.CMSPlugin']}, |
||||||
|
u'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'group_by_group': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'people': ('sortedm2m.fields.SortedManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['aldryn_people.Person']", 'null': 'True', 'blank': 'True'}), |
||||||
|
'show_links': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'show_vcard': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'style': ('django.db.models.fields.CharField', [], {'default': "'standard'", 'max_length': '50'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.person': { |
||||||
|
'Meta': {'object_name': 'Person'}, |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'default': "''", 'max_length': '75', 'blank': 'True'}), |
||||||
|
'fax': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), |
||||||
|
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['aldryn_people.Group']", 'null': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'mobile': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
'phone': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), |
||||||
|
'slug': ('django.db.models.fields.CharField', [], {'max_length': '255', 'unique': 'True', 'null': 'True', 'blank': 'True'}), |
||||||
|
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['auth.User']", 'unique': 'True', 'null': 'True', 'blank': 'True'}), |
||||||
|
'vcard_enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'visual': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': "orm['filer.Image']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}), |
||||||
|
'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_people.persontranslation': { |
||||||
|
'Meta': {'unique_together': "[('language_code', 'master')]", 'object_name': 'PersonTranslation', 'db_table': "u'aldryn_people_person_translation'"}, |
||||||
|
'description': ('djangocms_text_ckeditor.fields.HTMLField', [], {'default': "''", 'blank': 'True'}), |
||||||
|
'function': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'master': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'null': 'True', 'to': u"orm['aldryn_people.Person']"}) |
||||||
|
}, |
||||||
|
u'auth.group': { |
||||||
|
'Meta': {'object_name': 'Group'}, |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), |
||||||
|
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'auth.permission': { |
||||||
|
'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'}, |
||||||
|
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) |
||||||
|
}, |
||||||
|
u'auth.user': { |
||||||
|
'Meta': {'object_name': 'User'}, |
||||||
|
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), |
||||||
|
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
||||||
|
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), |
||||||
|
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), |
||||||
|
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), |
||||||
|
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) |
||||||
|
}, |
||||||
|
'cms.cmsplugin': { |
||||||
|
'Meta': {'object_name': 'CMSPlugin'}, |
||||||
|
'changed_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}), |
||||||
|
'placeholder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}), |
||||||
|
'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}), |
||||||
|
'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) |
||||||
|
}, |
||||||
|
'cms.placeholder': { |
||||||
|
'Meta': {'object_name': 'Placeholder'}, |
||||||
|
'default_width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) |
||||||
|
}, |
||||||
|
u'contenttypes.contenttype': { |
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, |
||||||
|
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) |
||||||
|
}, |
||||||
|
'filer.file': { |
||||||
|
'Meta': {'object_name': 'File'}, |
||||||
|
'_file_size': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'file': ('django.db.models.fields.files.FileField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'folder': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'all_files'", 'null': 'True', 'to': "orm['filer.Folder']"}), |
||||||
|
'has_all_mandatory_data': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), |
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), |
||||||
|
'original_filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'owned_files'", 'null': 'True', 'to': u"orm['auth.User']"}), |
||||||
|
'polymorphic_ctype': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'polymorphic_filer.file_set'", 'null': 'True', 'to': u"orm['contenttypes.ContentType']"}), |
||||||
|
'sha1': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '40', 'blank': 'True'}), |
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
'filer.folder': { |
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('parent', 'name'),)", 'object_name': 'Folder'}, |
||||||
|
'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
u'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
u'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), |
||||||
|
'owner': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'filer_owned_folders'", 'null': 'True', 'to': u"orm['auth.User']"}), |
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['filer.Folder']"}), |
||||||
|
u'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
u'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'uploaded_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
'filer.image': { |
||||||
|
'Meta': {'object_name': 'Image', '_ormbases': ['filer.File']}, |
||||||
|
'_height': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'_width': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'author': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'date_taken': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'default_alt_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
'default_caption': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), |
||||||
|
u'file_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['filer.File']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'must_always_publish_author_credit': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'must_always_publish_copyright': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), |
||||||
|
'subject_location': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '64', 'null': 'True', 'blank': 'True'}) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
complete_apps = ['aldryn_people'] |
||||||
@ -0,0 +1 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
@ -0,0 +1,18 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
from django.template.base import Library |
||||||
|
|
||||||
|
from phonenumbers import parse, format_number, PhoneNumberFormat |
||||||
|
from phonenumbers.phonenumberutil import NumberParseException |
||||||
|
|
||||||
|
|
||||||
|
register = Library() |
||||||
|
|
||||||
|
|
||||||
|
@register.filter(is_safe=True) |
||||||
|
def phoneformat(phone_number, phone_format='INTERNATIONAL'): |
||||||
|
try: |
||||||
|
parsed_number = parse(phone_number, None) |
||||||
|
format = getattr(PhoneNumberFormat, phone_format) |
||||||
|
return format_number(parsed_number, format) |
||||||
|
except NumberParseException: |
||||||
|
return phone_number |
||||||
@ -0,0 +1,172 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
|
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.conf import settings |
||||||
|
from django.contrib.auth.models import User |
||||||
|
from django.contrib.sites.models import Site |
||||||
|
from django.db import IntegrityError |
||||||
|
from django.test import RequestFactory, TestCase |
||||||
|
from django.utils.translation import override |
||||||
|
|
||||||
|
from cms import api |
||||||
|
from cms.models import Title |
||||||
|
from cms.test_utils.testcases import BaseCMSTestCase |
||||||
|
from cms.utils import get_cms_setting |
||||||
|
from cms.utils.i18n import get_language_list |
||||||
|
|
||||||
|
from djangocms_helper.utils import create_user |
||||||
|
|
||||||
|
from ..models import Group, Person |
||||||
|
|
||||||
|
|
||||||
|
class BasePeopleTest(BaseCMSTestCase, TestCase): |
||||||
|
su_username = 'user' |
||||||
|
su_password = 'pass' |
||||||
|
|
||||||
|
data = { |
||||||
|
'group1': { |
||||||
|
'en': {'name': 'group1', 'description': 'description1'}, |
||||||
|
'de': {'name': 'Gruppe1', 'description': 'Beschreibung1'}, |
||||||
|
}, |
||||||
|
'group2': { |
||||||
|
# This should *not* have a EN translation |
||||||
|
'de': {'name': 'Gruppe2', 'description': 'Beschreibung2'}, |
||||||
|
}, |
||||||
|
'person1': { |
||||||
|
'en': {'function': 'function1', 'description': 'description-en'}, |
||||||
|
'de': {'function': 'Funktion1', 'description': 'Beschreibung-de'}, |
||||||
|
}, |
||||||
|
'person2': { |
||||||
|
# This should *not* have a EN translation |
||||||
|
'de': {'function': 'Funktion2', 'description': 'Beschreibung2'}, |
||||||
|
}, |
||||||
|
} |
||||||
|
|
||||||
|
@staticmethod |
||||||
|
def reload(obj, language=None): |
||||||
|
"""Simple convenience method for re-fetching an object from the ORM, |
||||||
|
optionally "as" a specified language.""" |
||||||
|
try: |
||||||
|
new_obj = obj.__class__.objects.language(language).get(id=obj.id) |
||||||
|
except: |
||||||
|
new_obj = obj.__class__.objects.get(id=obj.id) |
||||||
|
return new_obj |
||||||
|
|
||||||
|
def assertEqualItems(self, a, b): |
||||||
|
try: |
||||||
|
# In Python3, this method has been renamed (poorly) |
||||||
|
return self.assertCountEqual(a, b) |
||||||
|
except: |
||||||
|
# In 2.6, assertItemsEqual() doesn't sort first |
||||||
|
return self.assertItemsEqual(sorted(a), sorted(b)) |
||||||
|
|
||||||
|
def mktranslation(self, obj, lang, **kwargs): |
||||||
|
"""Simple method of adding a translation to an existing object.""" |
||||||
|
try: |
||||||
|
obj.set_current_language(lang) |
||||||
|
except: |
||||||
|
try: |
||||||
|
obj.translate(lang) |
||||||
|
except IntegrityError: |
||||||
|
pass |
||||||
|
for k, v in kwargs.items(): |
||||||
|
setattr(obj, k, v) |
||||||
|
obj.save() |
||||||
|
|
||||||
|
def setUp(self): |
||||||
|
self.template = get_cms_setting('TEMPLATES')[0][0] |
||||||
|
self.language = settings.LANGUAGES[0][0] |
||||||
|
self.page = api.create_page( |
||||||
|
'page', self.template, self.language, published=True) |
||||||
|
self.placeholder = self.page.placeholders.all()[0] |
||||||
|
self.superuser = self.create_superuser() |
||||||
|
with override('en'): |
||||||
|
self.person1 = Person(**self.data['person1']['en']) |
||||||
|
self.group1 = Group(**self.data['group1']['en']) |
||||||
|
self.person1.name = 'person1' |
||||||
|
self.person1.slug = 'person1-slug' |
||||||
|
self.person1.save() |
||||||
|
self.group1.save() |
||||||
|
|
||||||
|
# Add a DE translation for person1, group1 |
||||||
|
self.mktranslation(self.person1, 'de', **self.data['person1']['de']) |
||||||
|
self.mktranslation(self.group1, 'de', **self.data['group1']['de']) |
||||||
|
|
||||||
|
# Make person2, group2 |
||||||
|
with override('de'): |
||||||
|
self.person2 = Person(**self.data['person2']['de']) |
||||||
|
self.group2 = Group(**self.data['group2']['de']) |
||||||
|
self.person2.name = 'person2' |
||||||
|
self.person2.slug = 'person2-slug' |
||||||
|
self.person2.save() |
||||||
|
self.group2.save() |
||||||
|
|
||||||
|
def tearDown(self): |
||||||
|
Person.objects.all().delete() |
||||||
|
Group.objects.all().delete() |
||||||
|
|
||||||
|
def create_superuser(self): |
||||||
|
return User.objects.create_superuser( |
||||||
|
self.su_username, 'email@example.com', self.su_password) |
||||||
|
|
||||||
|
|
||||||
|
class CMSRequestBasedTest(TestCase): |
||||||
|
"""Sets-up User(s) and CMS Pages for testing.""" |
||||||
|
languages = get_language_list() |
||||||
|
|
||||||
|
@classmethod |
||||||
|
def setUpClass(cls): |
||||||
|
cls.request_factory = RequestFactory() |
||||||
|
cls.user = create_user('normal', 'normal@admin.com', 'normal') |
||||||
|
cls.site1 = Site.objects.get(pk=1) |
||||||
|
|
||||||
|
@classmethod |
||||||
|
def tearDownClass(cls): |
||||||
|
User.objects.all().delete() |
||||||
|
|
||||||
|
def get_or_create_page(self, base_title=None, languages=None): |
||||||
|
"""Creates a page with a given title, or, if it already exists, just |
||||||
|
retrieves and returns it.""" |
||||||
|
from cms.api import create_page, create_title |
||||||
|
if not base_title: |
||||||
|
# No title? Create one. |
||||||
|
base_title = self.rand_str(prefix="page", length=8) |
||||||
|
if not languages: |
||||||
|
# If no langs supplied, use'em all |
||||||
|
languages = self.languages |
||||||
|
# If there is already a page with this title, just return it. |
||||||
|
try: |
||||||
|
page_title = Title.objects.get(title=base_title) |
||||||
|
return page_title.page.get_draft_object() |
||||||
|
except: |
||||||
|
pass |
||||||
|
|
||||||
|
# No? Okay, create one. |
||||||
|
page = create_page(base_title, 'fullwidth.html', language=languages[0]) |
||||||
|
# If there are multiple languages, create the translations |
||||||
|
if len(languages) > 1: |
||||||
|
for lang in languages[1:]: |
||||||
|
title_lang = "{0}-{1}".format(base_title, lang) |
||||||
|
create_title(language=lang, title=title_lang, page=page) |
||||||
|
page.publish(lang) |
||||||
|
return page.get_draft_object() |
||||||
|
|
||||||
|
def get_page_request( |
||||||
|
self, page, user, path=None, edit=False, lang_code='en'): |
||||||
|
from cms.middleware.toolbar import ToolbarMiddleware |
||||||
|
path = path or page and page.get_absolute_url() |
||||||
|
if edit: |
||||||
|
path += '?edit' |
||||||
|
request = RequestFactory().get(path) |
||||||
|
request.session = {} |
||||||
|
request.user = user |
||||||
|
request.LANGUAGE_CODE = lang_code |
||||||
|
if edit: |
||||||
|
request.GET = {'edit': None} |
||||||
|
else: |
||||||
|
request.GET = {'edit_off': None} |
||||||
|
request.current_page = page |
||||||
|
mid = ToolbarMiddleware() |
||||||
|
mid.process_request(request) |
||||||
|
return request |
||||||
@ -0,0 +1,31 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
|
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.contrib.sites.models import Site |
||||||
|
from django.utils.translation import override |
||||||
|
|
||||||
|
from ..admin.models_admin import PersonAdmin |
||||||
|
from ..models import Person |
||||||
|
|
||||||
|
from . import BasePeopleTest |
||||||
|
|
||||||
|
|
||||||
|
class TestPersonAdmin(BasePeopleTest): |
||||||
|
|
||||||
|
def test_all_translations(self): |
||||||
|
site = Site.objects.get(pk=1) |
||||||
|
model_admin = PersonAdmin(self.person1, site) |
||||||
|
all_translations = model_admin.all_translations(self.person1) |
||||||
|
obj_id = self.person1.id |
||||||
|
with override('en'): |
||||||
|
self.assertEqual( |
||||||
|
all_translations, |
||||||
|
'<strong><a href="/en/admin/aldryn_people/person/{id}/?language=en">en</a></strong>, <a href="/en/admin/aldryn_people/person/{id}/?language=de">de</a>'.format(id=obj_id) # flake8: noqa |
||||||
|
) |
||||||
|
# This test does not pass |
||||||
|
# with override('de'): |
||||||
|
# self.assertEqual( |
||||||
|
# all_translations, |
||||||
|
# '<a href="/en/admin/aldryn_people/person/{id}/?language=en">en</a>, <strong><a href="/en/admin/aldryn_people/person/{id}/?language=de">de</a></strong>'.format(id=obj_id) # flake8: noqa |
||||||
|
# ) |
||||||
@ -0,0 +1,34 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
|
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.core.urlresolvers import reverse |
||||||
|
|
||||||
|
from ..models import Person |
||||||
|
|
||||||
|
from . import BasePeopleTest |
||||||
|
|
||||||
|
|
||||||
|
class TestPersonAppHook(BasePeopleTest): |
||||||
|
|
||||||
|
def test_add_people_app(self): |
||||||
|
""" |
||||||
|
We add a person to the app |
||||||
|
""" |
||||||
|
self.page.application_urls = 'PeopleApp' |
||||||
|
self.page.application_namespace = 'aldryn_people' |
||||||
|
self.page.publish(self.language) |
||||||
|
|
||||||
|
person = Person.objects.create( |
||||||
|
name='Michael', phone='0785214521', email='michael@mit.ch', |
||||||
|
slug='michael' |
||||||
|
) |
||||||
|
# By slug |
||||||
|
url = reverse('aldryn_people:person-detail', kwargs={'slug': person.slug}) |
||||||
|
response = self.client.get(url) |
||||||
|
self.assertContains(response, 'Michael') |
||||||
|
|
||||||
|
# By pk |
||||||
|
url = reverse('aldryn_people:person-detail', kwargs={'pk': person.pk}) |
||||||
|
response = self.client.get(url) |
||||||
|
self.assertContains(response, 'Michael') |
||||||
@ -0,0 +1,201 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
|
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.core.urlresolvers import reverse |
||||||
|
from django.test import TransactionTestCase |
||||||
|
from django.utils.translation import override, force_text |
||||||
|
|
||||||
|
from ..models import Person, Group |
||||||
|
|
||||||
|
from . import BasePeopleTest |
||||||
|
|
||||||
|
|
||||||
|
class TestBasicPeopleModels(TransactionTestCase): |
||||||
|
|
||||||
|
def test_create_person(self): |
||||||
|
"""We can create a person with a name.""" |
||||||
|
name = 'Tom Test' |
||||||
|
person = Person.objects.create(name=name) |
||||||
|
self.assertEqual(person.name, name) |
||||||
|
self.assertEqual(Person.objects.all()[0], person) |
||||||
|
|
||||||
|
def test_delete_person(self): |
||||||
|
"""We can delete a person.""" |
||||||
|
name = 'Person Delete' |
||||||
|
Person.objects.create(name=name) |
||||||
|
Person.objects.get(name=name).delete() |
||||||
|
self.assertFalse(Person.objects.filter(name=name)) |
||||||
|
|
||||||
|
def test_str(self): |
||||||
|
name = 'Person Str' |
||||||
|
person = Person.objects.create(name=name) |
||||||
|
self.assertEqual(force_text(person), name) |
||||||
|
|
||||||
|
def test_absolute_url(self): |
||||||
|
slug = 'person-slug' |
||||||
|
person = Person.objects.create(slug=slug) |
||||||
|
# This isn't a translation test, per se, but let's make sure that we |
||||||
|
# have a predictable language prefix, regardless of the tester's locale. |
||||||
|
with override('en'): |
||||||
|
self.assertEqual( |
||||||
|
person.get_absolute_url(), |
||||||
|
'/en/people/{0}/'.format(slug) |
||||||
|
) |
||||||
|
# Now test that it will work when there's no slug too. |
||||||
|
person.slug = '' |
||||||
|
self.assertEqual( |
||||||
|
person.get_absolute_url(), |
||||||
|
'/en/people/{0}/'.format(person.pk), |
||||||
|
) |
||||||
|
|
||||||
|
def test_auto_slugify(self): |
||||||
|
name = 'Melchior Hoffman' |
||||||
|
slug = 'melchior-hoffman' |
||||||
|
person = Person.objects.create(name=name) |
||||||
|
person.save() |
||||||
|
self.assertEquals(person.slug, slug) |
||||||
|
|
||||||
|
|
||||||
|
class TestBasicGroupModel(TransactionTestCase): |
||||||
|
|
||||||
|
def test_create_group(self): |
||||||
|
"""We can create a group with a name.""" |
||||||
|
group = Group.objects.create(name='group_b') |
||||||
|
self.assertTrue(group.name, 'group_b') |
||||||
|
|
||||||
|
def test_delete_group(self): |
||||||
|
"""We can delete a group.""" |
||||||
|
name = 'Group Delete' |
||||||
|
Group.objects.create(name=name) |
||||||
|
group = Group.objects.translated(name=name) |
||||||
|
if group: |
||||||
|
group[0].delete() |
||||||
|
self.assertFalse(Group.objects.translated(name=name)) |
||||||
|
|
||||||
|
def test_create_another_group(self): |
||||||
|
"""we create a group.""" |
||||||
|
name = 'Gruppe Neu' |
||||||
|
group = Group.objects.create(name=name) |
||||||
|
self.assertEqual(group.name, name) |
||||||
|
self.assertEqual(Group.objects.all()[0], group) |
||||||
|
|
||||||
|
def test_add_person_to_group(self): |
||||||
|
"""We create a person and add her to the created group.""" |
||||||
|
personname = 'Daniel' |
||||||
|
person = Person.objects.create(name=personname) |
||||||
|
name = 'Group One' |
||||||
|
group = Group.objects.create(name=name) |
||||||
|
person.group = group |
||||||
|
person.save() |
||||||
|
self.assertIn(person, group.person_set.all()) |
||||||
|
|
||||||
|
|
||||||
|
class TestPersonModelTranslation(BasePeopleTest): |
||||||
|
|
||||||
|
def test_person_translatable(self): |
||||||
|
person1 = self.reload(self.person1, 'en') |
||||||
|
self.assertEqual( |
||||||
|
person1.function, |
||||||
|
self.data['person1']['en']['function'] |
||||||
|
) |
||||||
|
person1 = self.reload(self.person1, 'de') |
||||||
|
self.assertEqual( |
||||||
|
person1.safe_translation_getter('function'), |
||||||
|
self.data['person1']['de']['function'] |
||||||
|
) |
||||||
|
|
||||||
|
def test_comment(self): |
||||||
|
person1 = self.reload(self.person1, 'en') |
||||||
|
self.assertEqual( |
||||||
|
person1.comment, |
||||||
|
self.data['person1']['en']['description'] |
||||||
|
) |
||||||
|
person1 = self.reload(self.person1, 'de') |
||||||
|
self.assertEqual( |
||||||
|
person1.comment, |
||||||
|
self.data['person1']['de']['description'] |
||||||
|
) |
||||||
|
|
||||||
|
def test_get_vcard(self): |
||||||
|
person1 = self.reload(self.person1, 'en') |
||||||
|
# Test with no group |
||||||
|
vcard_en = 'BEGIN:VCARD\r\nVERSION:3.0\r\nFN:person1\r\nN:;person1;;;\r\nTITLE:function1\r\nEND:VCARD\r\n' # flake8: noqa |
||||||
|
self.assertEqual( |
||||||
|
person1.get_vcard(), |
||||||
|
vcard_en |
||||||
|
) |
||||||
|
# Test with a group and other fields populated |
||||||
|
group1 = self.reload(self.group1, 'en') |
||||||
|
group1.address = '123 Main Street' |
||||||
|
group1.city = 'Anytown' |
||||||
|
group1.postal_code = '12345' |
||||||
|
group1.phone = '+1 (234) 567-8903' |
||||||
|
group1.fax = '+1 (234) 567-8904' |
||||||
|
group1.website = 'www.groupwebsite.com' |
||||||
|
group1.save() |
||||||
|
person1.group = group1 |
||||||
|
person1.email = 'person@org.org' |
||||||
|
person1.phone = '+1 (234) 567-8900' |
||||||
|
person1.mobile = '+1 (234) 567-8901' |
||||||
|
person1.fax = '+1 (234) 567-8902' |
||||||
|
person1.website = 'www.website.com' |
||||||
|
person1.save() |
||||||
|
vcard_en = 'BEGIN:VCARD\r\nVERSION:3.0\r\nADR;TYPE=WORK:;;123 Main Street;Anytown;;12345;\r\nEMAIL:person@org.org\r\nFN:person1\r\nN:;person1;;;\r\nORG:group1\r\nTEL;TYPE=WORK:+1 (234) 567-8900\r\nTEL;TYPE=CELL:+1 (234) 567-8901\r\nTEL;TYPE=FAX:+1 (234) 567-8902\r\nTEL;TYPE=WORK:+1 (234) 567-8903\r\nTEL;TYPE=FAX:+1 (234) 567-8904\r\nTITLE:function1\r\nURL:www.website.com\r\nURL:www.groupwebsite.com\r\nEND:VCARD\r\n' # flake8: noqa |
||||||
|
self.assertEqual( |
||||||
|
person1.get_vcard(), |
||||||
|
vcard_en |
||||||
|
) |
||||||
|
# Ensure this works for other langs too |
||||||
|
person1 = self.reload(self.person1, 'de') |
||||||
|
vcard_de = 'BEGIN:VCARD\r\nVERSION:3.0\r\nADR;TYPE=WORK:;;123 Main Street;Anytown;;12345;\r\nEMAIL:person@org.org\r\nFN:person1\r\nN:;person1;;;\r\nORG:Gruppe1\r\nTEL;TYPE=WORK:+1 (234) 567-8900\r\nTEL;TYPE=CELL:+1 (234) 567-8901\r\nTEL;TYPE=FAX:+1 (234) 567-8902\r\nTEL;TYPE=WORK:+1 (234) 567-8903\r\nTEL;TYPE=FAX:+1 (234) 567-8904\r\nTITLE:Funktion1\r\nURL:www.website.com\r\nURL:www.groupwebsite.com\r\nEND:VCARD\r\n' # flake8: noqa |
||||||
|
with override('de'): |
||||||
|
self.assertEqual( |
||||||
|
person1.get_vcard(), |
||||||
|
vcard_de |
||||||
|
) |
||||||
|
|
||||||
|
|
||||||
|
class TestGroupModelTranslation(BasePeopleTest): |
||||||
|
|
||||||
|
def test_group_translation(self): |
||||||
|
group1 = self.reload(self.group1, 'en') |
||||||
|
self.assertEqual(group1.name, self.data['group1']['en']['name']) |
||||||
|
group1 = self.reload(self.group1, 'de') |
||||||
|
self.assertEqual(group1.name, self.data['group1']['de']['name']) |
||||||
|
|
||||||
|
def test_company_name(self): |
||||||
|
group1 = self.reload(self.group1, 'en') |
||||||
|
self.assertEqual( |
||||||
|
group1.company_name, |
||||||
|
self.data['group1']['en']['name'], |
||||||
|
) |
||||||
|
group1 = self.reload(self.group1, 'de') |
||||||
|
self.assertEqual( |
||||||
|
group1.company_name, |
||||||
|
self.data['group1']['de']['name'], |
||||||
|
) |
||||||
|
|
||||||
|
def test_company_description(self): |
||||||
|
group1 = self.reload(self.group1, 'en') |
||||||
|
self.assertEqual( |
||||||
|
group1.company_description, |
||||||
|
self.data['group1']['en']['description'], |
||||||
|
) |
||||||
|
group1 = self.reload(self.group1, 'de') |
||||||
|
self.assertEqual( |
||||||
|
group1.company_description, |
||||||
|
self.data['group1']['de']['description'], |
||||||
|
) |
||||||
|
|
||||||
|
def test_str(self): |
||||||
|
group1 = self.reload(self.group1, 'en') |
||||||
|
self.assertEqual( |
||||||
|
force_text(group1), |
||||||
|
self.data['group1']['en']['name'], |
||||||
|
) |
||||||
|
group1 = self.reload(self.group1, 'de') |
||||||
|
self.assertEqual( |
||||||
|
force_text(group1), |
||||||
|
self.data['group1']['de']['name'], |
||||||
|
) |
||||||
@ -0,0 +1,48 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
|
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.utils.translation import force_text |
||||||
|
|
||||||
|
from cms import api |
||||||
|
from cms.models import CMSPlugin |
||||||
|
from cms.test_utils.testcases import URL_CMS_PLUGIN_ADD |
||||||
|
|
||||||
|
from ..models import Person |
||||||
|
from ..cms_plugins import PeoplePlugin |
||||||
|
|
||||||
|
from . import BasePeopleTest |
||||||
|
|
||||||
|
|
||||||
|
class TestPersonPlugins(BasePeopleTest): |
||||||
|
|
||||||
|
def test_add_people_list_plugin_api(self): |
||||||
|
""" |
||||||
|
We add a person to the People Plugin and look her up |
||||||
|
""" |
||||||
|
name = 'Donald' |
||||||
|
Person.objects.create(name=name) |
||||||
|
plugin = api.add_plugin(self.placeholder, PeoplePlugin, self.language) |
||||||
|
plugin.people = Person.objects.all() |
||||||
|
self.assertEqual(force_text(plugin), force_text(plugin.pk)) |
||||||
|
self.page.publish(self.language) |
||||||
|
|
||||||
|
url = self.page.get_absolute_url() |
||||||
|
response = self.client.get(url) |
||||||
|
self.assertContains(response, name) |
||||||
|
|
||||||
|
def test_add_people_list_plugin_client(self): |
||||||
|
""" |
||||||
|
We log into the PeoplePlugin |
||||||
|
""" |
||||||
|
self.client.login(username=self.su_username, password=self.su_password) |
||||||
|
|
||||||
|
plugin_data = { |
||||||
|
'plugin_type': 'PeoplePlugin', |
||||||
|
'plugin_language': self.language, |
||||||
|
'placeholder_id': self.placeholder.pk, |
||||||
|
} |
||||||
|
|
||||||
|
response = self.client.post(URL_CMS_PLUGIN_ADD, plugin_data) |
||||||
|
self.assertEqual(response.status_code, 200) |
||||||
|
self.assertTrue(CMSPlugin.objects.exists()) |
||||||
@ -0,0 +1,49 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
|
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from aldryn_people.search_indexes import PeopleIndex |
||||||
|
|
||||||
|
from ..models import Person |
||||||
|
|
||||||
|
from . import BasePeopleTest |
||||||
|
|
||||||
|
|
||||||
|
class TestPeopleIndex(BasePeopleTest): |
||||||
|
def test_get_title(self): |
||||||
|
idx_obj = PeopleIndex() |
||||||
|
person1 = self.reload(self.person1, "en") |
||||||
|
self.assertEqual(idx_obj.get_title(person1), person1.name) |
||||||
|
person1 = self.reload(self.person1, "de") |
||||||
|
self.assertEqual(idx_obj.get_title(person1), person1.name) |
||||||
|
|
||||||
|
def test_get_index_kwargs(self): |
||||||
|
# This is a silly test, but is here for completeness. |
||||||
|
idx_obj = PeopleIndex() |
||||||
|
self.assertEqual(idx_obj.get_index_kwargs("en"), { |
||||||
|
'translations__language_code': 'en' |
||||||
|
}) |
||||||
|
|
||||||
|
def test_get_index_queryset(self): |
||||||
|
idx_obj = PeopleIndex() |
||||||
|
# Person2 does NOT have an EN translation, so should appear here. |
||||||
|
self.assertEqualItems( |
||||||
|
[q.id for q in idx_obj.get_index_queryset("en")], |
||||||
|
[self.person1.id], |
||||||
|
) |
||||||
|
# Both person objects have DE translations |
||||||
|
self.assertEqualItems( |
||||||
|
[q.id for q in idx_obj.get_index_queryset("de")], |
||||||
|
[self.person1.id, self.person2.id], |
||||||
|
) |
||||||
|
|
||||||
|
def test_get_model(self): |
||||||
|
# This is a silly test, but is here for completeness. |
||||||
|
idx_obj = PeopleIndex() |
||||||
|
self.assertEqual(idx_obj.get_model(), Person) |
||||||
|
|
||||||
|
def test_get_search_data(self): |
||||||
|
idx_obj = PeopleIndex() |
||||||
|
person1 = self.reload(self.person1, "en") |
||||||
|
search_data = idx_obj.get_search_data(person1, "en", None) |
||||||
|
self.assertEqual(search_data, self.data['person1']['en']['description']) |
||||||
@ -0,0 +1,34 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
|
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.core.urlresolvers import reverse |
||||||
|
from django.http import Http404 |
||||||
|
from django.test.client import RequestFactory |
||||||
|
|
||||||
|
from ..views import DownloadVcardView |
||||||
|
|
||||||
|
from . import BasePeopleTest, CMSRequestBasedTest |
||||||
|
|
||||||
|
|
||||||
|
class TestDownloadVcardView(BasePeopleTest, CMSRequestBasedTest): |
||||||
|
def test_as_view(self): |
||||||
|
"""Tests that DownloadVcardView produces the correct headers.""" |
||||||
|
person1 = self.reload(self.person1, "en") |
||||||
|
person1.slug = 'person1-slug' |
||||||
|
kwargs = {"slug": person1.slug} |
||||||
|
person1_url = reverse('aldryn_people:person-detail', kwargs=kwargs) |
||||||
|
factory = RequestFactory() |
||||||
|
request = factory.get(person1_url) |
||||||
|
response = DownloadVcardView.as_view()(request, **kwargs) |
||||||
|
filename = '{0}.vcf'.format(person1.name) |
||||||
|
self.assertEqual( |
||||||
|
response["Content-Disposition"], |
||||||
|
'attachment; filename="{0}"'.format(filename) |
||||||
|
) |
||||||
|
# Now, disable vcards for this person, and re-test |
||||||
|
person1.vcard_enabled = False |
||||||
|
person1.save() |
||||||
|
with self.assertRaises(Http404): |
||||||
|
request = factory.get(person1_url) |
||||||
|
response = DownloadVcardView.as_view()(request, **kwargs) |
||||||
@ -0,0 +1,38 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
|
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.conf import settings |
||||||
|
from django.conf.urls import patterns, include, url |
||||||
|
from django.conf.urls.i18n import i18n_patterns |
||||||
|
from django.contrib import admin |
||||||
|
from django.contrib.staticfiles.urls import staticfiles_urlpatterns |
||||||
|
|
||||||
|
from cms.utils.conf import get_cms_setting |
||||||
|
|
||||||
|
admin.autodiscover() |
||||||
|
|
||||||
|
urlpatterns = patterns('', |
||||||
|
url( |
||||||
|
r'^media/(?P<path>.*)$', 'django.views.static.serve', { |
||||||
|
'document_root': settings.MEDIA_ROOT, 'show_indexes': True |
||||||
|
} |
||||||
|
), |
||||||
|
url( |
||||||
|
r'^media/cms/(?P<path>.*)$', 'django.views.static.serve', { |
||||||
|
'document_root': get_cms_setting('MEDIA_ROOT'), 'show_indexes': True |
||||||
|
} |
||||||
|
), |
||||||
|
url( |
||||||
|
r'^jsi18n/(?P<packages>\S+?)/$', |
||||||
|
'django.views.i18n.javascript_catalog' |
||||||
|
), |
||||||
|
) |
||||||
|
|
||||||
|
urlpatterns += staticfiles_urlpatterns() |
||||||
|
|
||||||
|
urlpatterns += i18n_patterns('', |
||||||
|
url(r'^admin/', include(admin.site.urls)), |
||||||
|
url(r'^people/', include('aldryn_people.urls', namespace='aldryn_people')), |
||||||
|
url(r'^', include('cms.urls')), |
||||||
|
) |
||||||
@ -0,0 +1,18 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
|
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.conf.urls import patterns, url |
||||||
|
|
||||||
|
from aldryn_people.views import PersonView, DownloadVcardView |
||||||
|
|
||||||
|
urlpatterns = patterns('', |
||||||
|
url(r'^(?P<pk>[0-9]+)/$', |
||||||
|
PersonView.as_view(), name='person-detail'), |
||||||
|
url(r'^(?P<slug>[A-Za-z0-9_\-]+)/$', |
||||||
|
PersonView.as_view(), name='person-detail'), |
||||||
|
url(r'^(?P<pk>[0-9]+)/download/$', |
||||||
|
DownloadVcardView.as_view(), name='download_vcard'), |
||||||
|
url(r'^(?P<slug>[A-Za-z0-9_\-]+)/download/$', |
||||||
|
DownloadVcardView.as_view(), name='download_vcard'), |
||||||
|
) |
||||||
@ -0,0 +1,14 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
|
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.conf import settings |
||||||
|
|
||||||
|
|
||||||
|
def get_additional_styles(): |
||||||
|
""" |
||||||
|
Get additional styles choices from settings |
||||||
|
""" |
||||||
|
styles = getattr(settings, 'PEOPLE_PLUGIN_STYLES', '') |
||||||
|
choices = [(s.strip().lower(), s.title()) for s in styles.split(',') if s] |
||||||
|
return choices |
||||||
@ -0,0 +1,32 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
|
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.http import Http404, HttpResponse |
||||||
|
from django.views.generic import DetailView |
||||||
|
|
||||||
|
from aldryn_people.models import Person |
||||||
|
|
||||||
|
|
||||||
|
class DownloadVcardView(DetailView): |
||||||
|
model = Person |
||||||
|
|
||||||
|
def get(self, request, *args, **kwargs): |
||||||
|
person = self.get_object() |
||||||
|
if not person.vcard_enabled: |
||||||
|
raise Http404 |
||||||
|
|
||||||
|
filename = "%s.vcf" % person.name |
||||||
|
vcard = person.get_vcard(request) |
||||||
|
try: |
||||||
|
vcard = vcard.decode('utf-8').encode('ISO-8859-1') |
||||||
|
except: |
||||||
|
pass |
||||||
|
response = HttpResponse(vcard, content_type="text/x-vCard") |
||||||
|
response['Content-Disposition'] = 'attachment; filename="{0}"'.format( |
||||||
|
filename) |
||||||
|
return response |
||||||
|
|
||||||
|
|
||||||
|
class PersonView(DetailView): |
||||||
|
model = Person |
||||||
@ -0,0 +1,3 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
|
||||||
|
__version__='0.6.4' |
||||||
@ -0,0 +1,41 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
|
||||||
|
from __future__ import unicode_literals |
||||||
|
from django.conf.urls import url |
||||||
|
from django.contrib import admin |
||||||
|
|
||||||
|
from .models import Segment |
||||||
|
from .views import set_segment_override, reset_all_segment_overrides |
||||||
|
|
||||||
|
class SegmentAdmin(admin.ModelAdmin): |
||||||
|
|
||||||
|
# |
||||||
|
# Note: model.Segment is empty and un-managed. Its sole purpose is to |
||||||
|
# provide the opportunity to add custom views to the AdminSite for |
||||||
|
# managing segments from the toolbar. |
||||||
|
# |
||||||
|
|
||||||
|
def get_model_perms(self, request): |
||||||
|
''' |
||||||
|
Returns an empty perms dict which has the effect of disabling its |
||||||
|
display in the AdminSite, but still allows access to the views defined |
||||||
|
below. |
||||||
|
''' |
||||||
|
return dict() |
||||||
|
|
||||||
|
|
||||||
|
def get_urls(self): |
||||||
|
|
||||||
|
return [ |
||||||
|
url(r'set_override/$', |
||||||
|
self.admin_site.admin_view(set_segment_override), |
||||||
|
name='set_segment_override' |
||||||
|
), |
||||||
|
|
||||||
|
url(r'reset_all_segment_overrides/$', |
||||||
|
self.admin_site.admin_view(reset_all_segment_overrides), |
||||||
|
name='reset_all_segment_overrides' |
||||||
|
), |
||||||
|
] + super(SegmentAdmin, self).get_urls() |
||||||
|
|
||||||
|
admin.site.register(Segment, SegmentAdmin) |
||||||
@ -0,0 +1,5 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
|
||||||
|
from .segment_plugin_base import * |
||||||
|
from .segment_plugins import * |
||||||
|
from .segment_limiter import * |
||||||
@ -0,0 +1,124 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
|
||||||
|
from __future__ import unicode_literals |
||||||
|
from django.utils.translation import ugettext_lazy as _ |
||||||
|
from cms.plugin_pool import plugin_pool |
||||||
|
|
||||||
|
from ..models import SegmentLimitPluginModel |
||||||
|
from .segment_plugin_base import SegmentPluginBase |
||||||
|
|
||||||
|
|
||||||
|
class SegmentLimitPlugin(SegmentPluginBase): |
||||||
|
''' |
||||||
|
This is a special SegmentPlugin that acts as a top-level container for |
||||||
|
segmentation plugins and can set an upper-limit to the number of children |
||||||
|
that will be rendered in the current context. |
||||||
|
''' |
||||||
|
|
||||||
|
allow_children = True |
||||||
|
model = SegmentLimitPluginModel |
||||||
|
module = _('Segmentation') |
||||||
|
name = _('Limit Block') |
||||||
|
parent_classes = None |
||||||
|
render_template = 'aldryn_segmentation/_limiter.html' |
||||||
|
|
||||||
|
allow_overrides = False |
||||||
|
|
||||||
|
def render(self, context, instance, placeholder): |
||||||
|
context = super(SegmentLimitPlugin, self).render( |
||||||
|
context, instance, placeholder) |
||||||
|
context['child_plugins'] = self.get_context_appropriate_children( |
||||||
|
context, instance) |
||||||
|
return context |
||||||
|
|
||||||
|
|
||||||
|
def is_context_appropriate(self, context, instance): |
||||||
|
''' |
||||||
|
Returns True if any of its children are context-appropriate, |
||||||
|
else False. |
||||||
|
''' |
||||||
|
apt_children = self.get_context_appropriate_children(context, instance) |
||||||
|
num_apt = sum( 1 for child in apt_children if child[1] ) |
||||||
|
return num_apt > 0 |
||||||
|
|
||||||
|
|
||||||
|
def get_context_appropriate_children(self, context, instance): |
||||||
|
from ..segment_pool import SegmentOverride |
||||||
|
''' |
||||||
|
Returns a LIST OF TUPLES each containing a child plugin instance and a |
||||||
|
Boolean representing the plugin's appropriateness for rendering in |
||||||
|
this context. |
||||||
|
''' |
||||||
|
|
||||||
|
children = [] |
||||||
|
# child_plugin_instances can sometimes be None |
||||||
|
generic_children = instance.child_plugin_instances or [] |
||||||
|
render_all = (instance.max_children == 0) |
||||||
|
slots_remaining = instance.max_children |
||||||
|
|
||||||
|
for child_instance in generic_children: |
||||||
|
|
||||||
|
child_plugin = child_instance.get_plugin_class_instance() |
||||||
|
|
||||||
|
if render_all or slots_remaining > 0: |
||||||
|
|
||||||
|
if hasattr(child_plugin, 'is_context_appropriate'): |
||||||
|
# |
||||||
|
# This quacks like a segment plugin... |
||||||
|
# |
||||||
|
if (hasattr(child_plugin, 'allow_overrides') and |
||||||
|
child_plugin.allow_overrides and |
||||||
|
hasattr(child_plugin, 'get_segment_override')): |
||||||
|
|
||||||
|
override = child_plugin.get_segment_override( |
||||||
|
context, child_instance) |
||||||
|
|
||||||
|
if override == SegmentOverride.ForcedActive: |
||||||
|
child = (child_instance, True) |
||||||
|
elif override == SegmentOverride.ForcedInactive: |
||||||
|
child = (child_instance, False) |
||||||
|
else: |
||||||
|
# |
||||||
|
# There's no override, so, just let the segment |
||||||
|
# decide... |
||||||
|
# |
||||||
|
child = ( |
||||||
|
child_instance, |
||||||
|
child_plugin.is_context_appropriate( |
||||||
|
context, child_instance |
||||||
|
), |
||||||
|
) |
||||||
|
else: |
||||||
|
# |
||||||
|
# Hmmm, this segment plugin appears to have no |
||||||
|
# allow_overrides property or get_segment_override() |
||||||
|
# method. OK then, let the plugin decide if it is |
||||||
|
# appropriate to render. |
||||||
|
# |
||||||
|
child = ( |
||||||
|
child_instance, |
||||||
|
child_plugin.is_context_appropriate( |
||||||
|
context, child_instance |
||||||
|
), |
||||||
|
) |
||||||
|
else: |
||||||
|
# |
||||||
|
# This doesn't quack like a Segment Plugin, so, it is |
||||||
|
# always OK to render. |
||||||
|
# |
||||||
|
child = ( child_instance, True, ) |
||||||
|
|
||||||
|
if child[1]: |
||||||
|
slots_remaining -= 1 |
||||||
|
else: |
||||||
|
# |
||||||
|
# We've run out of available slots... |
||||||
|
# |
||||||
|
child = ( child_instance, False, ) |
||||||
|
|
||||||
|
children.append(child) |
||||||
|
|
||||||
|
return children |
||||||
|
|
||||||
|
|
||||||
|
plugin_pool.register_plugin(SegmentLimitPlugin) |
||||||
@ -0,0 +1,68 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
|
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.utils.translation import ugettext_lazy as _ |
||||||
|
|
||||||
|
from cms.plugin_base import CMSPluginBase |
||||||
|
|
||||||
|
|
||||||
|
class SegmentPluginBase(CMSPluginBase): |
||||||
|
''' |
||||||
|
Abstract base class to be used for all segment plugins. It provides the |
||||||
|
default implementation of necessary additional methods for: |
||||||
|
|
||||||
|
* Registering conditions for Segmentation Previews for operators; |
||||||
|
* Reporting if the segment's condition(s) are met. |
||||||
|
|
||||||
|
Also, by using this base class, the Segmentation Group Plugin will be able |
||||||
|
accept the plugin (The Segmentation Group plugin has child_classes set to |
||||||
|
this class). |
||||||
|
''' |
||||||
|
|
||||||
|
class Meta: |
||||||
|
abstract = True |
||||||
|
|
||||||
|
allow_children = True |
||||||
|
cache = False |
||||||
|
module = _('Segmentation') |
||||||
|
parent_classes = ['SegmentLimitPlugin', ] |
||||||
|
render_template = 'aldryn_segmentation/_segment.html' |
||||||
|
text_enabled = False |
||||||
|
|
||||||
|
# |
||||||
|
# Leave set to True to allow this plugin to be displayed in the Segment |
||||||
|
# Toolbar Menu for overriding by the operator. |
||||||
|
# |
||||||
|
allow_overrides = True |
||||||
|
|
||||||
|
|
||||||
|
def get_segment_override(self, context, instance): |
||||||
|
''' |
||||||
|
If the current user is logged-in and this segment plugin allows |
||||||
|
overrides, then return the current override for this segment, else, |
||||||
|
returns SegmentOverride.NoOverride. |
||||||
|
|
||||||
|
This should NOT be overridden in subclasses. |
||||||
|
''' |
||||||
|
|
||||||
|
# This can't be defined at the file level, else circular imports |
||||||
|
from ..segment_pool import segment_pool, SegmentOverride |
||||||
|
|
||||||
|
request = context['request'] |
||||||
|
if request.user.is_authenticated(): |
||||||
|
return segment_pool.get_override_for_segment( |
||||||
|
request.user, self, instance |
||||||
|
) |
||||||
|
|
||||||
|
return SegmentOverride.NoOverride |
||||||
|
|
||||||
|
|
||||||
|
def is_context_appropriate(self, context, instance): |
||||||
|
''' |
||||||
|
Return True if this plugin is appropriate for rendering in the given |
||||||
|
context. (Non-degenerate) Segment Plugins should override this and |
||||||
|
supply the appropriate tests. |
||||||
|
''' |
||||||
|
|
||||||
|
return True |
||||||
@ -0,0 +1,85 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
|
||||||
|
from __future__ import unicode_literals |
||||||
|
from django.utils.translation import ugettext_lazy as _ |
||||||
|
|
||||||
|
from cms.plugin_pool import plugin_pool |
||||||
|
|
||||||
|
from .segment_plugin_base import SegmentPluginBase |
||||||
|
|
||||||
|
from ..models import ( |
||||||
|
AuthenticatedSegmentPluginModel, |
||||||
|
CookieSegmentPluginModel, |
||||||
|
FallbackSegmentPluginModel, |
||||||
|
SwitchSegmentPluginModel, |
||||||
|
) |
||||||
|
|
||||||
|
|
||||||
|
class FallbackSegmentPlugin(SegmentPluginBase): |
||||||
|
''' |
||||||
|
This segment plugin represents a degenerate case where the segment |
||||||
|
always matches. |
||||||
|
''' |
||||||
|
|
||||||
|
model = FallbackSegmentPluginModel |
||||||
|
name = _('Fallback') |
||||||
|
|
||||||
|
# It doesn't make much sense to override this one... |
||||||
|
allow_overrides = False |
||||||
|
|
||||||
|
def is_context_appropriate(self, context, instance): |
||||||
|
return True |
||||||
|
|
||||||
|
plugin_pool.register_plugin(FallbackSegmentPlugin) |
||||||
|
|
||||||
|
|
||||||
|
class SwitchSegmentPlugin(SegmentPluginBase): |
||||||
|
''' |
||||||
|
This switch segmentation plugin allows the operator to turn the segment ON |
||||||
|
or OFF statically and independently from the context. This is primarily |
||||||
|
useful for testing. |
||||||
|
''' |
||||||
|
|
||||||
|
model = SwitchSegmentPluginModel |
||||||
|
name = _('Segment by switch') |
||||||
|
|
||||||
|
# It doesn't make much sense to override this one... |
||||||
|
allow_overrides = False |
||||||
|
|
||||||
|
def is_context_appropriate(self, context, instance): |
||||||
|
return instance.on_off |
||||||
|
|
||||||
|
plugin_pool.register_plugin(SwitchSegmentPlugin) |
||||||
|
|
||||||
|
|
||||||
|
class CookieSegmentPlugin(SegmentPluginBase): |
||||||
|
''' |
||||||
|
This is a segmentation plugin that renders output on the condition that a |
||||||
|
cookie with ``cookie_key`` is present and has the value ``cookie_value``. |
||||||
|
''' |
||||||
|
|
||||||
|
model = CookieSegmentPluginModel |
||||||
|
name = _('Segment by cookie') |
||||||
|
|
||||||
|
def is_context_appropriate(self, context, instance): |
||||||
|
request = context.get('request') |
||||||
|
value = request.COOKIES.get(instance.cookie_key) |
||||||
|
return (value == instance.cookie_value) |
||||||
|
|
||||||
|
plugin_pool.register_plugin(CookieSegmentPlugin) |
||||||
|
|
||||||
|
|
||||||
|
class AuthenticatedSegmentPlugin(SegmentPluginBase): |
||||||
|
''' |
||||||
|
This plugin allows segmentation based on the authentication/authorization |
||||||
|
status of the visitor. |
||||||
|
''' |
||||||
|
|
||||||
|
model = AuthenticatedSegmentPluginModel |
||||||
|
name = _('Segment by auth') |
||||||
|
|
||||||
|
def is_context_appropriate(self, context, instance): |
||||||
|
request = context.get('request') |
||||||
|
return request and request.user and request.user.is_authenticated() |
||||||
|
|
||||||
|
plugin_pool.register_plugin(AuthenticatedSegmentPlugin) |
||||||
@ -0,0 +1,20 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
|
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from cms.toolbar_base import CMSToolbar |
||||||
|
from cms.toolbar_pool import toolbar_pool |
||||||
|
|
||||||
|
from .segment_pool import segment_pool |
||||||
|
|
||||||
|
|
||||||
|
@toolbar_pool.register |
||||||
|
class SegmentToolbar(CMSToolbar): |
||||||
|
|
||||||
|
def populate(self): |
||||||
|
|
||||||
|
segment_pool.get_segments_toolbar_menu( |
||||||
|
self.request.user, |
||||||
|
self.request.toolbar, |
||||||
|
csrf_token=self.request.COOKIES.get('csrftoken') |
||||||
|
) |
||||||
Binary file not shown.
@ -0,0 +1,171 @@ |
|||||||
|
# SOME DESCRIPTIVE TITLE. |
||||||
|
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER |
||||||
|
# This file is distributed under the same license as the PACKAGE package. |
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. |
||||||
|
# |
||||||
|
#, fuzzy |
||||||
|
msgid "" |
||||||
|
msgstr "" |
||||||
|
"Project-Id-Version: PACKAGE VERSION\n" |
||||||
|
"Report-Msgid-Bugs-To: \n" |
||||||
|
"POT-Creation-Date: 2014-06-21 15:23+0300\n" |
||||||
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
||||||
|
"Language-Team: LANGUAGE <LL@li.org>\n" |
||||||
|
"Language: \n" |
||||||
|
"MIME-Version: 1.0\n" |
||||||
|
"Content-Type: text/plain; charset=UTF-8\n" |
||||||
|
"Content-Transfer-Encoding: 8bit\n" |
||||||
|
"Plural-Forms: nplurals=2; plural=(n > 1);\n" |
||||||
|
|
||||||
|
#: cms_toolbar.py:40 |
||||||
|
#, python-format |
||||||
|
msgid "Segments (%s)" |
||||||
|
msgstr "Segments (%s)" |
||||||
|
|
||||||
|
#: cms_toolbar.py:40 |
||||||
|
msgid "Segments" |
||||||
|
msgstr "Segments" |
||||||
|
|
||||||
|
#: cms_toolbar.py:104 |
||||||
|
msgid "Reset all segments" |
||||||
|
msgstr "Réinitialiser tous les segments" |
||||||
|
|
||||||
|
#: models.py:29 models.py:75 |
||||||
|
msgid "label" |
||||||
|
msgstr "label" |
||||||
|
|
||||||
|
#: models.py:32 |
||||||
|
msgid "Optionally set a label for this limit block." |
||||||
|
msgstr "Éventuellement définir une étiquette pour ce bloc de limite." |
||||||
|
|
||||||
|
#: models.py:36 |
||||||
|
msgid "# of matches to display" |
||||||
|
msgstr "No. de matchs à afficher" |
||||||
|
|
||||||
|
#: models.py:39 |
||||||
|
msgid "Display up to how many matching segments?" |
||||||
|
msgstr "Afficher jusqu'à combien de segments correspondant?" |
||||||
|
|
||||||
|
#: models.py:45 |
||||||
|
msgid "Show All" |
||||||
|
msgstr "Afficher tous" |
||||||
|
|
||||||
|
#: models.py:47 models.py:49 |
||||||
|
msgid "Show First" |
||||||
|
msgstr "Afficher la première" |
||||||
|
|
||||||
|
#: models.py:54 models.py:108 |
||||||
|
#, python-format |
||||||
|
msgid "%(label)s [%(config)s]" |
||||||
|
msgstr "%(label)s [%(config)s]" |
||||||
|
|
||||||
|
#: models.py:120 |
||||||
|
msgid "Always active" |
||||||
|
msgstr "Toujours activé" |
||||||
|
|
||||||
|
#: models.py:125 |
||||||
|
msgid "Always on?" |
||||||
|
msgstr "Toujours activé?" |
||||||
|
|
||||||
|
#: models.py:127 |
||||||
|
msgid "Uncheck to always hide child plugins." |
||||||
|
msgstr "Décochez de toujours cacher plugins enfants." |
||||||
|
|
||||||
|
#: models.py:133 |
||||||
|
msgid "Always ON" |
||||||
|
msgstr "Toujours activé?" |
||||||
|
|
||||||
|
#: models.py:135 |
||||||
|
msgid "Always OFF" |
||||||
|
msgstr "Toujours désactivé?" |
||||||
|
|
||||||
|
#: models.py:156 |
||||||
|
msgid "name of cookie" |
||||||
|
msgstr "Nom du cookie" |
||||||
|
|
||||||
|
#: models.py:159 |
||||||
|
msgid "Name of cookie to consider." |
||||||
|
msgstr "Nom du cookie à envisager" |
||||||
|
|
||||||
|
#: models.py:163 |
||||||
|
msgid "value to compare" |
||||||
|
msgstr "valeur à comparer" |
||||||
|
|
||||||
|
#: models.py:166 |
||||||
|
msgid "Value to consider." |
||||||
|
msgstr "Valeur à considérer" |
||||||
|
|
||||||
|
#: models.py:174 |
||||||
|
#, python-format |
||||||
|
msgid "“{key}” equals “{value}”" |
||||||
|
msgstr "«{key}» est égal à «{value}»" |
||||||
|
|
||||||
|
#: models.py:460 |
||||||
|
#, python-format |
||||||
|
msgid "%(code)s: %(name)s" |
||||||
|
msgstr "%(code)s: %(name)s" |
||||||
|
|
||||||
|
#: models.py:467 |
||||||
|
msgid "country" |
||||||
|
msgstr "pays" |
||||||
|
|
||||||
|
#: models.py:476 |
||||||
|
msgid " (" |
||||||
|
msgstr " (" |
||||||
|
|
||||||
|
#: models.py:476 |
||||||
|
msgid ")" |
||||||
|
msgstr ")" |
||||||
|
|
||||||
|
#: models.py:485 |
||||||
|
msgid "is Authenticated" |
||||||
|
msgstr "Est authentifiée" |
||||||
|
|
||||||
|
#: segment_pool.py:32 |
||||||
|
msgid "No override" |
||||||
|
msgstr "Pas de dérogation" |
||||||
|
|
||||||
|
#: segment_pool.py:33 |
||||||
|
msgid "Forced active" |
||||||
|
msgstr "Forcée active" |
||||||
|
|
||||||
|
#: segment_pool.py:34 |
||||||
|
msgid "Forced inactive" |
||||||
|
msgstr "Forcé inactif" |
||||||
|
|
||||||
|
#: views.py:23 |
||||||
|
msgid "The segment override was successfully changed." |
||||||
|
msgstr "La correction de segment a été modifié avec succès." |
||||||
|
|
||||||
|
#: views.py:32 |
||||||
|
msgid "The all segment override were successfully reset." |
||||||
|
msgstr "La correction tout segment ont été correctement remis à zéro." |
||||||
|
|
||||||
|
#: cms_plugins/segment_limiter.py:20 cms_plugins/segment_plugin_base.py:28 |
||||||
|
msgid "Segmentation" |
||||||
|
msgstr "Segmentation" |
||||||
|
|
||||||
|
#: cms_plugins/segment_limiter.py:21 |
||||||
|
msgid "Limit Block" |
||||||
|
msgstr "Bloc de limite" |
||||||
|
|
||||||
|
#: cms_plugins/segment_plugins.py:26 |
||||||
|
msgid "Fallback" |
||||||
|
msgstr "Repli" |
||||||
|
|
||||||
|
#: cms_plugins/segment_plugins.py:45 |
||||||
|
msgid "Segment by switch" |
||||||
|
msgstr "Secteur par switch" |
||||||
|
|
||||||
|
#: cms_plugins/segment_plugins.py:63 |
||||||
|
msgid "Segment by cookie" |
||||||
|
msgstr "Secteur par cookie" |
||||||
|
|
||||||
|
#: cms_plugins/segment_plugins.py:87 |
||||||
|
msgid "Segment by country" |
||||||
|
msgstr "Secteur par pays" |
||||||
|
|
||||||
|
#: cms_plugins/segment_plugins.py:107 |
||||||
|
msgid "Segment by auth" |
||||||
|
msgstr "Secteur par auth" |
||||||
@ -0,0 +1,125 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
from south.utils import datetime_utils as datetime |
||||||
|
from south.db import db |
||||||
|
from south.v2 import SchemaMigration |
||||||
|
from django.db import models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(SchemaMigration): |
||||||
|
|
||||||
|
def forwards(self, orm): |
||||||
|
# Adding model 'SegmentLimitPluginModel' |
||||||
|
db.create_table(u'aldryn_segmentation_segmentlimitpluginmodel', ( |
||||||
|
(u'cmsplugin_ptr', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['cms.CMSPlugin'], unique=True, primary_key=True)), |
||||||
|
('label', self.gf('django.db.models.fields.CharField')(default=u'', max_length=128, blank=True)), |
||||||
|
('max_children', self.gf('django.db.models.fields.PositiveIntegerField')(default=1)), |
||||||
|
)) |
||||||
|
db.send_create_signal(u'aldryn_segmentation', ['SegmentLimitPluginModel']) |
||||||
|
|
||||||
|
# Adding model 'FallbackSegmentPluginModel' |
||||||
|
db.create_table(u'aldryn_segmentation_fallbacksegmentpluginmodel', ( |
||||||
|
(u'cmsplugin_ptr', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['cms.CMSPlugin'], unique=True, primary_key=True)), |
||||||
|
('label', self.gf('django.db.models.fields.CharField')(default=u'', max_length=128, blank=True)), |
||||||
|
)) |
||||||
|
db.send_create_signal(u'aldryn_segmentation', ['FallbackSegmentPluginModel']) |
||||||
|
|
||||||
|
# Adding model 'SwitchSegmentPluginModel' |
||||||
|
db.create_table(u'aldryn_segmentation_switchsegmentpluginmodel', ( |
||||||
|
(u'cmsplugin_ptr', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['cms.CMSPlugin'], unique=True, primary_key=True)), |
||||||
|
('label', self.gf('django.db.models.fields.CharField')(default=u'', max_length=128, blank=True)), |
||||||
|
('on_off', self.gf('django.db.models.fields.BooleanField')(default=True)), |
||||||
|
)) |
||||||
|
db.send_create_signal(u'aldryn_segmentation', ['SwitchSegmentPluginModel']) |
||||||
|
|
||||||
|
# Adding model 'CookieSegmentPluginModel' |
||||||
|
db.create_table(u'aldryn_segmentation_cookiesegmentpluginmodel', ( |
||||||
|
(u'cmsplugin_ptr', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['cms.CMSPlugin'], unique=True, primary_key=True)), |
||||||
|
('label', self.gf('django.db.models.fields.CharField')(default=u'', max_length=128, blank=True)), |
||||||
|
('cookie_key', self.gf('django.db.models.fields.CharField')(default=u'', max_length=4096)), |
||||||
|
('cookie_value', self.gf('django.db.models.fields.CharField')(default=u'', max_length=4096)), |
||||||
|
)) |
||||||
|
db.send_create_signal(u'aldryn_segmentation', ['CookieSegmentPluginModel']) |
||||||
|
|
||||||
|
# Adding model 'AuthenticatedSegmentPluginModel' |
||||||
|
db.create_table(u'aldryn_segmentation_authenticatedsegmentpluginmodel', ( |
||||||
|
(u'cmsplugin_ptr', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['cms.CMSPlugin'], unique=True, primary_key=True)), |
||||||
|
('label', self.gf('django.db.models.fields.CharField')(default=u'', max_length=128, blank=True)), |
||||||
|
)) |
||||||
|
db.send_create_signal(u'aldryn_segmentation', ['AuthenticatedSegmentPluginModel']) |
||||||
|
|
||||||
|
|
||||||
|
def backwards(self, orm): |
||||||
|
# Deleting model 'SegmentLimitPluginModel' |
||||||
|
db.delete_table(u'aldryn_segmentation_segmentlimitpluginmodel') |
||||||
|
|
||||||
|
# Deleting model 'FallbackSegmentPluginModel' |
||||||
|
db.delete_table(u'aldryn_segmentation_fallbacksegmentpluginmodel') |
||||||
|
|
||||||
|
# Deleting model 'SwitchSegmentPluginModel' |
||||||
|
db.delete_table(u'aldryn_segmentation_switchsegmentpluginmodel') |
||||||
|
|
||||||
|
# Deleting model 'CookieSegmentPluginModel' |
||||||
|
db.delete_table(u'aldryn_segmentation_cookiesegmentpluginmodel') |
||||||
|
|
||||||
|
# Deleting model 'AuthenticatedSegmentPluginModel' |
||||||
|
db.delete_table(u'aldryn_segmentation_authenticatedsegmentpluginmodel') |
||||||
|
|
||||||
|
|
||||||
|
models = { |
||||||
|
u'aldryn_segmentation.authenticatedsegmentpluginmodel': { |
||||||
|
'Meta': {'object_name': 'AuthenticatedSegmentPluginModel'}, |
||||||
|
u'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'label': ('django.db.models.fields.CharField', [], {'default': "u''", 'max_length': '128', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_segmentation.cookiesegmentpluginmodel': { |
||||||
|
'Meta': {'object_name': 'CookieSegmentPluginModel'}, |
||||||
|
u'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'cookie_key': ('django.db.models.fields.CharField', [], {'default': "u''", 'max_length': '4096'}), |
||||||
|
'cookie_value': ('django.db.models.fields.CharField', [], {'default': "u''", 'max_length': '4096'}), |
||||||
|
'label': ('django.db.models.fields.CharField', [], {'default': "u''", 'max_length': '128', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_segmentation.fallbacksegmentpluginmodel': { |
||||||
|
'Meta': {'object_name': 'FallbackSegmentPluginModel'}, |
||||||
|
u'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'label': ('django.db.models.fields.CharField', [], {'default': "u''", 'max_length': '128', 'blank': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_segmentation.segment': { |
||||||
|
'Meta': {'object_name': 'Segment', 'managed': 'False'}, |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) |
||||||
|
}, |
||||||
|
u'aldryn_segmentation.segmentlimitpluginmodel': { |
||||||
|
'Meta': {'object_name': 'SegmentLimitPluginModel', '_ormbases': ['cms.CMSPlugin']}, |
||||||
|
u'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'label': ('django.db.models.fields.CharField', [], {'default': "u''", 'max_length': '128', 'blank': 'True'}), |
||||||
|
'max_children': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}) |
||||||
|
}, |
||||||
|
u'aldryn_segmentation.switchsegmentpluginmodel': { |
||||||
|
'Meta': {'object_name': 'SwitchSegmentPluginModel'}, |
||||||
|
u'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), |
||||||
|
'label': ('django.db.models.fields.CharField', [], {'default': "u''", 'max_length': '128', 'blank': 'True'}), |
||||||
|
'on_off': ('django.db.models.fields.BooleanField', [], {'default': 'True'}) |
||||||
|
}, |
||||||
|
'cms.cmsplugin': { |
||||||
|
'Meta': {'object_name': 'CMSPlugin'}, |
||||||
|
'changed_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), |
||||||
|
'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), |
||||||
|
'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}), |
||||||
|
'placeholder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}), |
||||||
|
'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}), |
||||||
|
'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}), |
||||||
|
'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), |
||||||
|
'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) |
||||||
|
}, |
||||||
|
'cms.placeholder': { |
||||||
|
'Meta': {'object_name': 'Placeholder'}, |
||||||
|
'default_width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True'}), |
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), |
||||||
|
'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
complete_apps = ['aldryn_segmentation'] |
||||||
@ -0,0 +1,241 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
|
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import models |
||||||
|
from django.utils import six |
||||||
|
from django.utils.encoding import python_2_unicode_compatible, force_text |
||||||
|
from django.utils.functional import lazy |
||||||
|
from django.utils.translation import ugettext_lazy as _, string_concat |
||||||
|
|
||||||
|
from cms.models import CMSPlugin |
||||||
|
|
||||||
|
|
||||||
|
# |
||||||
|
# NOTE: The SegmentLimitPluginModel does NOT subclass SegmentBasePluginModel |
||||||
|
# |
||||||
|
@python_2_unicode_compatible |
||||||
|
class SegmentLimitPluginModel(CMSPlugin): |
||||||
|
|
||||||
|
# |
||||||
|
# Need to consider how best to display this in the Plugin Change Form... |
||||||
|
# |
||||||
|
# 0 means "Display ALL segments that match", |
||||||
|
# 1 means "Display first matching segment", |
||||||
|
# 2 means "Display up to two matching segments," |
||||||
|
# and so on... |
||||||
|
# |
||||||
|
|
||||||
|
label = models.CharField(_('label'), |
||||||
|
blank=True, |
||||||
|
default='', |
||||||
|
help_text=_('Optionally set a label for this limit block.'), |
||||||
|
max_length=128, |
||||||
|
) |
||||||
|
|
||||||
|
max_children = models.PositiveIntegerField(_('# of matches to display'), |
||||||
|
blank=False, |
||||||
|
default=1, |
||||||
|
help_text=_('Display up to how many matching segments?'), |
||||||
|
) |
||||||
|
|
||||||
|
@property |
||||||
|
def configuration_string(self): |
||||||
|
if self.max_children == 0: |
||||||
|
return _('Show All') |
||||||
|
elif self.max_children == 1: |
||||||
|
return _('Show First') |
||||||
|
else: |
||||||
|
return string_concat(_('Show First'), ' ', self.max_children) |
||||||
|
|
||||||
|
|
||||||
|
def __str__(self): |
||||||
|
''' |
||||||
|
If there is a label, show that with the configuration in brackets, |
||||||
|
otherwise, just return the configuration string. |
||||||
|
''' |
||||||
|
|
||||||
|
if self.label: |
||||||
|
conf_str = _('{label} [{config}]').format( |
||||||
|
label=self.label, |
||||||
|
config=force_text(self.configuration_string), |
||||||
|
) |
||||||
|
else: |
||||||
|
conf_str = self.configuration_string |
||||||
|
|
||||||
|
return force_text(conf_str) |
||||||
|
|
||||||
|
|
||||||
|
@python_2_unicode_compatible |
||||||
|
class SegmentBasePluginModel(CMSPlugin): |
||||||
|
|
||||||
|
# |
||||||
|
# Defines a common interface for segment plugins. Also note that plugin |
||||||
|
# model's subclassing this class will automatically be (un-)registered |
||||||
|
# (from)to the segment_pool via 'pre_delete' and 'post_save' signals. This |
||||||
|
# is implemented in aldryn_segmentation.segment_pool. |
||||||
|
# |
||||||
|
|
||||||
|
class Meta: |
||||||
|
abstract = True |
||||||
|
|
||||||
|
label = models.CharField(_('label'), |
||||||
|
blank=True, |
||||||
|
default='', |
||||||
|
max_length=128, |
||||||
|
) |
||||||
|
|
||||||
|
|
||||||
|
@property |
||||||
|
def configuration_string(self): |
||||||
|
''' |
||||||
|
Return a ugettext_lazy object (or a lazy function that returns the |
||||||
|
same) that represents the configuration for the plugin instance in a |
||||||
|
unique, concise manner that is suitable for a toolbar menu option. |
||||||
|
|
||||||
|
Some Examples: |
||||||
|
Cookie: |
||||||
|
'"key" equals "value"' |
||||||
|
Country: |
||||||
|
'Country is Kenya' |
||||||
|
Auth: |
||||||
|
'User is authenticated' |
||||||
|
Switch: |
||||||
|
'Always ON' |
||||||
|
Limit: |
||||||
|
'Show First' |
||||||
|
|
||||||
|
In cases where the returned string is composed with placeholders, E.g.: |
||||||
|
|
||||||
|
Cookie: |
||||||
|
ugettext_lazy('“{key}” equals “{value}”').format( |
||||||
|
key=self.key, |
||||||
|
value=self.value |
||||||
|
) |
||||||
|
|
||||||
|
You *must* actually return a evaluated, lazy wrapper around the |
||||||
|
gettext_lazy operation as follows: |
||||||
|
|
||||||
|
def configuration_string(self): |
||||||
|
wrapper(): |
||||||
|
return ugettext_lazy('“{key}” equals “{value}”').format( |
||||||
|
key=self.key, |
||||||
|
value=self.value |
||||||
|
) |
||||||
|
|
||||||
|
# NOTE: the trailing '()' |
||||||
|
return lazy(wrapper, six.text_type)() |
||||||
|
|
||||||
|
Otherwise, the translations won't happen. |
||||||
|
|
||||||
|
This construction is not required for untranslated or non- |
||||||
|
parameterized translations. |
||||||
|
|
||||||
|
|
||||||
|
NOTE: Each subclass must override to suit. |
||||||
|
''' |
||||||
|
raise NotImplementedError("Please Implement this method") |
||||||
|
|
||||||
|
|
||||||
|
def __str__(self): |
||||||
|
''' |
||||||
|
If there is a label, show that with the configuration in brackets, |
||||||
|
otherwise, just return the configuration string. |
||||||
|
''' |
||||||
|
|
||||||
|
if self.label: |
||||||
|
conf_str = _('{label} [{config}]').format( |
||||||
|
label=self.label, |
||||||
|
config=force_text(self.configuration_string), |
||||||
|
) |
||||||
|
else: |
||||||
|
conf_str = self.configuration_string |
||||||
|
|
||||||
|
return force_text(conf_str) |
||||||
|
|
||||||
|
|
||||||
|
class FallbackSegmentPluginModel(SegmentBasePluginModel): |
||||||
|
|
||||||
|
@property |
||||||
|
def configuration_string(self): |
||||||
|
return _('Always active') |
||||||
|
|
||||||
|
|
||||||
|
class SwitchSegmentPluginModel(SegmentBasePluginModel): |
||||||
|
|
||||||
|
on_off = models.BooleanField(_('Always on?'), |
||||||
|
default=True, |
||||||
|
help_text=_('Uncheck to always hide child plugins.'), |
||||||
|
) |
||||||
|
|
||||||
|
@property |
||||||
|
def configuration_string(self): |
||||||
|
if self.on_off: |
||||||
|
return _('Always ON') |
||||||
|
else: |
||||||
|
return _('Always OFF') |
||||||
|
|
||||||
|
|
||||||
|
class CookieSegmentPluginModel(SegmentBasePluginModel): |
||||||
|
|
||||||
|
# |
||||||
|
# Consider that we should probably support either: |
||||||
|
# Simple wildcard '*', '?' expressions or |
||||||
|
# RegEx expressions or |
||||||
|
# Both. |
||||||
|
# |
||||||
|
# A note about the max_lengths selected: browsers can support up to 4093 |
||||||
|
# characters for a given cookie (combining both the key and the value). So |
||||||
|
# either one can be up to 4092 chars in length. Since these are |
||||||
|
# implemented as VarChars, this shouldn't be too wasteful and still |
||||||
|
# support almost anything. |
||||||
|
# |
||||||
|
# NOTE: This forces a requirement for MySQL users to be using 5.0.3 or |
||||||
|
# later (which is already a requirement for Django 1.5+). |
||||||
|
# |
||||||
|
|
||||||
|
cookie_key = models.CharField(_('name of cookie'), |
||||||
|
blank=False, |
||||||
|
default='', |
||||||
|
help_text=_('Name of cookie to consider.'), |
||||||
|
max_length=4096, |
||||||
|
) |
||||||
|
|
||||||
|
cookie_value = models.CharField(_('value to compare'), |
||||||
|
blank=False, |
||||||
|
default='', |
||||||
|
help_text=_('Value to consider.'), |
||||||
|
max_length=4096, |
||||||
|
) |
||||||
|
|
||||||
|
@property |
||||||
|
def configuration_string(self): |
||||||
|
|
||||||
|
def wrapper(): |
||||||
|
return _('“{key}” equals “{value}”').format(key=self.cookie_key, value=self.cookie_value) |
||||||
|
|
||||||
|
return lazy( |
||||||
|
wrapper, |
||||||
|
six.text_type |
||||||
|
)() |
||||||
|
|
||||||
|
|
||||||
|
class AuthenticatedSegmentPluginModel(SegmentBasePluginModel): |
||||||
|
|
||||||
|
@property |
||||||
|
def configuration_string(self): |
||||||
|
return _('is Authenticated') |
||||||
|
|
||||||
|
|
||||||
|
@python_2_unicode_compatible |
||||||
|
class Segment(models.Model): |
||||||
|
''' |
||||||
|
This is a hollow, unmanaged model that simply allows us to attach custom |
||||||
|
admin views into the AdminSite. |
||||||
|
''' |
||||||
|
|
||||||
|
class Meta: |
||||||
|
managed=False |
||||||
|
|
||||||
|
def __str__(self): |
||||||
|
return 'Segment is an empty, unmanaged model.' |
||||||
@ -0,0 +1,4 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
|
||||||
|
from .segment_pool import SegmentOverride, segment_pool |
||||||
|
from .signals import register_segment, unregister_segment |
||||||
@ -0,0 +1,600 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
|
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
import sys |
||||||
|
import warnings |
||||||
|
|
||||||
|
from django.core.exceptions import ImproperlyConfigured |
||||||
|
from django.core.urlresolvers import reverse |
||||||
|
from django.utils import six |
||||||
|
from django.utils.encoding import force_text, python_2_unicode_compatible |
||||||
|
from django.utils.functional import Promise |
||||||
|
from django.utils.translation import activate, get_language, ugettext_lazy as _ |
||||||
|
|
||||||
|
from cms.exceptions import PluginAlreadyRegistered, PluginNotRegistered |
||||||
|
from cms.models import CMSPlugin |
||||||
|
from cms.plugin_pool import plugin_pool |
||||||
|
from cms.toolbar.items import SubMenu, Break, AjaxItem |
||||||
|
|
||||||
|
from ..cms_plugins import SegmentPluginBase |
||||||
|
from ..models import SegmentBasePluginModel |
||||||
|
|
||||||
|
|
||||||
|
# |
||||||
|
# A simple enum so we can use the same code in Python's < 3.4. |
||||||
|
# |
||||||
|
class SegmentOverride: |
||||||
|
NoOverride, ForcedActive, ForcedInactive = range(3) |
||||||
|
|
||||||
|
overrides_list = [ |
||||||
|
(NoOverride, _('No override')), |
||||||
|
(ForcedActive, _('Forced active')), |
||||||
|
(ForcedInactive, _('Forced inactive')), |
||||||
|
] |
||||||
|
|
||||||
|
|
||||||
|
@python_2_unicode_compatible |
||||||
|
class SegmentPool(object): |
||||||
|
''' |
||||||
|
This maintains a set of nested sorted dicts containing, among other |
||||||
|
attributes, a list of segment plugin instances in the form: |
||||||
|
|
||||||
|
segments = { |
||||||
|
/class/ : { |
||||||
|
NAME: _(/name/), |
||||||
|
CFGS: { |
||||||
|
/configuration_string/ : { |
||||||
|
LABEL: _(/configuration_string/), |
||||||
|
OVERRIDES: { |
||||||
|
/user.id/: /SegmentOverride enum value/, |
||||||
|
... |
||||||
|
}, |
||||||
|
INSTANCES: [ ... ] |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
The outer-most dict organizes everything by the class name of the plugin. |
||||||
|
The actual human-readable version of the plugin's type name is stored |
||||||
|
under the key 'NAME'. |
||||||
|
|
||||||
|
Each plugin's unique configuration is stored in the plugin type's CFGS |
||||||
|
dict keyed with the instance's configuration_string realised as 'en' |
||||||
|
unicode. The unresolved version of the string--usually a lazy translation |
||||||
|
proxy object--is stored under the configuration's 'LABEL' key. This allows |
||||||
|
translation to any other language (that is in the gettext catalog) at |
||||||
|
will. This is also used for correctly sorting the configurations in the |
||||||
|
current language. |
||||||
|
|
||||||
|
This is implmented as a non-persistent, system-wide singleton, it is |
||||||
|
shared by all operators of the system. In order to keep overrides for each |
||||||
|
user distinct, they are stored in the OVERRIDES dict, keyed with the |
||||||
|
user's username. |
||||||
|
|
||||||
|
Plugin instances are recorded in the INSTANCES list. As well as allowing |
||||||
|
us to find instances that have changed their configuration (likely to |
||||||
|
happen when an operator changes the plugin's configuration), this allows |
||||||
|
us to prune no-longer relevant parts of this structure as instances are |
||||||
|
de-registered. |
||||||
|
''' |
||||||
|
|
||||||
|
# |
||||||
|
# Magic Strings for managing the structures below. |
||||||
|
# |
||||||
|
CFGS = 'CFGS' |
||||||
|
NAME = 'NAME' |
||||||
|
LABEL = 'LABEL' |
||||||
|
OVERRIDES = 'OVERRIDES' |
||||||
|
INSTANCES = 'INSTANCES' |
||||||
|
|
||||||
|
|
||||||
|
def __init__(self): |
||||||
|
self.segments = dict() |
||||||
|
self._sorted_segments = dict() |
||||||
|
|
||||||
|
|
||||||
|
def discover(self): |
||||||
|
''' |
||||||
|
Find and register any SegmentPlugins already configured in the CMS and |
||||||
|
register them. |
||||||
|
''' |
||||||
|
|
||||||
|
# |
||||||
|
# To reduce the number of queries we'll be making against CMSPlugin, |
||||||
|
# let's build a set of eligible plugin_types. This part should not hit |
||||||
|
# the database at all (provided that the plugin_pool is already |
||||||
|
# populated.) |
||||||
|
# |
||||||
|
# In this case, 'eligible' means that the plugin class subclasses |
||||||
|
# SegmentPluginBase and that it has allow_overrides = True. Segment |
||||||
|
# plugins that have allow_overrides = False are not registered. |
||||||
|
# |
||||||
|
plugin_types = [] |
||||||
|
for plugin_class in plugin_pool.get_all_plugins(): |
||||||
|
if (issubclass(plugin_class, SegmentPluginBase) and |
||||||
|
plugin_class.allow_overrides): |
||||||
|
plugin_types.append(plugin_class.__name__) |
||||||
|
|
||||||
|
# |
||||||
|
# Process the plugins that are one of these types. |
||||||
|
# |
||||||
|
for plugin_instance in CMSPlugin.objects.filter(plugin_type__in=plugin_types): |
||||||
|
# |
||||||
|
# Get the instance as an instance of its proper class rather than |
||||||
|
# this CMSPlugin object. |
||||||
|
# |
||||||
|
plugin_instance = plugin_instance.get_plugin_instance()[0] |
||||||
|
self.register_segment_plugin(plugin_instance, suppress_discovery=True) |
||||||
|
|
||||||
|
|
||||||
|
def register_segment_plugin(self, plugin_instance, suppress_discovery=False): |
||||||
|
''' |
||||||
|
Registers the provided plugin_instance into the SegmentPool. |
||||||
|
Raises: |
||||||
|
PluginAlreadyRegistered: if the plugin is already registered and |
||||||
|
ImproperlyConfigured: if not an appropriate type of plugin. |
||||||
|
|
||||||
|
Note: plugin_instance.configuration_string can return either of: |
||||||
|
|
||||||
|
1. A normal string of text, |
||||||
|
2. A gettext_lazy object, |
||||||
|
3. A extra-lazy object (Promise to return a gettext_lazy object) |
||||||
|
|
||||||
|
the `suppress_discovery` flag, when set to true, prevents recursion |
||||||
|
and should be only used by the self.discovery() method. |
||||||
|
''' |
||||||
|
|
||||||
|
if not suppress_discovery and not self.segments: |
||||||
|
self.discover() |
||||||
|
|
||||||
|
if isinstance(plugin_instance, SegmentBasePluginModel): |
||||||
|
plugin_class_instance = plugin_instance.get_plugin_class_instance() |
||||||
|
|
||||||
|
if plugin_class_instance.allow_overrides: |
||||||
|
# |
||||||
|
# There is no need to register a plugin that doesn't |
||||||
|
# allow overrides. |
||||||
|
# |
||||||
|
plugin_class_name = plugin_class_instance.__class__.__name__ |
||||||
|
plugin_name = plugin_class_instance.name |
||||||
|
|
||||||
|
if plugin_class_name not in self.segments: |
||||||
|
self.segments[plugin_class_name] = { |
||||||
|
self.NAME: plugin_name, |
||||||
|
self.CFGS: dict(), |
||||||
|
} |
||||||
|
self._sorted_segments = dict() |
||||||
|
segment_class = self.segments[plugin_class_name] |
||||||
|
|
||||||
|
plugin_config = plugin_instance.configuration_string |
||||||
|
|
||||||
|
# |
||||||
|
# NOTE: We always use the 'en' version of the configuration string |
||||||
|
# as the key. |
||||||
|
# |
||||||
|
lang = get_language() |
||||||
|
activate('en') |
||||||
|
|
||||||
|
if isinstance(plugin_config, Promise): |
||||||
|
plugin_config_key = force_text(plugin_config) |
||||||
|
elif isinstance(plugin_config, six.text_type): |
||||||
|
plugin_config_key = plugin_config |
||||||
|
else: |
||||||
|
warnings.warn('register_segment: Not really sure what ' |
||||||
|
'‘plugin_instance.configuration_string’ returned!') |
||||||
|
|
||||||
|
activate(lang) |
||||||
|
|
||||||
|
segment_configs = segment_class[self.CFGS] |
||||||
|
|
||||||
|
if plugin_config_key not in segment_configs: |
||||||
|
# We store the un-translated version as the LABEL |
||||||
|
segment_configs[plugin_config_key] = { |
||||||
|
self.LABEL : plugin_config, |
||||||
|
self.OVERRIDES : dict(), |
||||||
|
self.INSTANCES : list(), |
||||||
|
} |
||||||
|
self._sorted_segments = dict() |
||||||
|
|
||||||
|
segment = segment_configs[plugin_config_key] |
||||||
|
|
||||||
|
if plugin_instance not in segment[self.INSTANCES]: |
||||||
|
segment[self.INSTANCES].append( plugin_instance ) |
||||||
|
self._sorted_segments = dict() |
||||||
|
else: |
||||||
|
cls = plugin_instance.get_plugin_class_instance().__class__.__name__ |
||||||
|
raise PluginAlreadyRegistered('The segment plugin {0} cannot ' |
||||||
|
'be registered because it already is.'.format(cls)) |
||||||
|
|
||||||
|
else: |
||||||
|
cls = plugin_instance.__class__.__name__ |
||||||
|
raise ImproperlyConfigured('Segment Plugin models must ' |
||||||
|
'subclass SegmentBasePluginModel. {0!r} does not.'.format(cls)) |
||||||
|
|
||||||
|
|
||||||
|
def unregister_segment_plugin(self, plugin_instance): |
||||||
|
''' |
||||||
|
Removes the given plugin from the SegmentPool. |
||||||
|
''' |
||||||
|
|
||||||
|
# |
||||||
|
# NOTE: In many cases, the configuration of a given plugin may have |
||||||
|
# changed before we receive the call to unregister it. So, we'll look |
||||||
|
# for the plugin in all CFGS for this plugin's class. |
||||||
|
# |
||||||
|
|
||||||
|
if not self.segments: |
||||||
|
self.discover() |
||||||
|
|
||||||
|
if not isinstance(plugin_instance, SegmentBasePluginModel): |
||||||
|
raise ImproperlyConfigured('Segment Plugins must subclasses of ' |
||||||
|
'SegmentBasePluginModel. {0} is not.'.format( |
||||||
|
plugin_instance.get_plugin_class_instance().__class__.__name__ |
||||||
|
)) |
||||||
|
else: |
||||||
|
plugin_class_instance = plugin_instance.get_plugin_class_instance() |
||||||
|
if plugin_class_instance.allow_overrides: |
||||||
|
# |
||||||
|
# A segment plugin that doesn't allow overrides wouldn't be |
||||||
|
# registered in the first place. |
||||||
|
# |
||||||
|
plugin_class_name = plugin_class_instance.__class__.__name__ |
||||||
|
|
||||||
|
if plugin_class_name in self.segments: |
||||||
|
segment_class = self.segments[plugin_class_name] |
||||||
|
segment_configs = segment_class[self.CFGS] |
||||||
|
for configuration, data in segment_configs.items(): |
||||||
|
if plugin_instance in data[self.INSTANCES]: |
||||||
|
# Found it! Now remove it... |
||||||
|
data[self.INSTANCES].remove(plugin_instance) |
||||||
|
self._sorted_segments = dict() |
||||||
|
|
||||||
|
# Clean-up any empty elements caused by this removal... |
||||||
|
if len(data[self.INSTANCES]) == 0: |
||||||
|
# OK, this was the last one, so... |
||||||
|
del segment_configs[configuration] |
||||||
|
|
||||||
|
if len(segment_configs) == 0: |
||||||
|
# This too was the last one |
||||||
|
del self.segments[plugin_class_name] |
||||||
|
return |
||||||
|
|
||||||
|
try: |
||||||
|
cls = plugin_instance.get_plugin_class_instance().__class__.__name__ |
||||||
|
raise PluginNotRegistered('The segment plugin {0} cannot be ' |
||||||
|
'unregistered because it is not currently registered in the ' |
||||||
|
'SegmentPool.'.format(cls)) |
||||||
|
except: |
||||||
|
raise PluginNotRegistered() |
||||||
|
|
||||||
|
|
||||||
|
def set_override(self, user, segment_class, segment_config, override): |
||||||
|
''' |
||||||
|
(Re-)Set an override on a segment (segment_class x segment_config). |
||||||
|
''' |
||||||
|
|
||||||
|
if not self.segments: |
||||||
|
self.discover() |
||||||
|
|
||||||
|
overrides = self.segments[segment_class][self.CFGS][segment_config][self.OVERRIDES] |
||||||
|
if override == SegmentOverride.NoOverride: |
||||||
|
del overrides[user.username] |
||||||
|
else: |
||||||
|
overrides[user.username] = override |
||||||
|
self._sorted_segments = dict() |
||||||
|
|
||||||
|
|
||||||
|
def reset_all_segment_overrides(self, user): |
||||||
|
''' |
||||||
|
Resets (disables) the overrides for all segments. |
||||||
|
''' |
||||||
|
|
||||||
|
if not self.segments: |
||||||
|
self.discover() |
||||||
|
|
||||||
|
for segment_class in self.segments.values(): |
||||||
|
for configuration in segment_class[self.CFGS].values(): |
||||||
|
for username, override in configuration[self.OVERRIDES].items(): |
||||||
|
if username == user.username: |
||||||
|
configuration[self.OVERRIDES][username] = SegmentOverride.NoOverride |
||||||
|
self._sorted_segments = dict() |
||||||
|
|
||||||
|
|
||||||
|
def get_num_overrides_for_user(self, user): |
||||||
|
''' |
||||||
|
Returns a count of the number of overrides for all segments for the |
||||||
|
given user. This is used for the toolbar menu where we show the number |
||||||
|
of active overrides. |
||||||
|
''' |
||||||
|
|
||||||
|
if not self.segments: |
||||||
|
self.discover() |
||||||
|
|
||||||
|
num = 0 |
||||||
|
for segment_class_name, segment_class in self.segments.items(): |
||||||
|
for config_str, config in segment_class[self.CFGS].items(): |
||||||
|
for username, override in config[self.OVERRIDES].items(): |
||||||
|
if username == user.username and int(override): |
||||||
|
num += 1 |
||||||
|
return num |
||||||
|
|
||||||
|
|
||||||
|
def get_override_for_classname(self, user, plugin_class_name, segment_config): |
||||||
|
''' |
||||||
|
Given the user, plugin_class_name and segment_config, return the |
||||||
|
current override, if any. |
||||||
|
''' |
||||||
|
|
||||||
|
# |
||||||
|
# Note: segment_config can be either of: |
||||||
|
# |
||||||
|
# 1. A number string of text |
||||||
|
# 2. A lazy translation object (Promise) |
||||||
|
# |
||||||
|
|
||||||
|
if not self.segments: |
||||||
|
self.discover() |
||||||
|
|
||||||
|
lang = get_language() |
||||||
|
activate('en') |
||||||
|
if isinstance(segment_config, Promise): |
||||||
|
segment_key = force_text(segment_config) |
||||||
|
elif isinstance(segment_config, six.text_type): |
||||||
|
segment_key = segment_config |
||||||
|
else: |
||||||
|
segment_key = segment_config |
||||||
|
activate(lang) |
||||||
|
|
||||||
|
try: |
||||||
|
overrides = self.segments[plugin_class_name][self.CFGS][segment_key][self.OVERRIDES] |
||||||
|
|
||||||
|
if user.username in overrides: |
||||||
|
# TODO: I don't like this int-casting used here or anywhere. |
||||||
|
return int(overrides[user.username]) |
||||||
|
|
||||||
|
except KeyError: |
||||||
|
if not isinstance(segment_config, Promise): |
||||||
|
import inspect |
||||||
|
warnings.warn('get_override_for_segment() received ' |
||||||
|
'segment_config: “{0}” as type {1} from: {2!r}. ' |
||||||
|
'This has resulted in a failure to retrieve a ' |
||||||
|
'segment override.'.format( |
||||||
|
segment_config, |
||||||
|
type(segment_config), |
||||||
|
inspect.stack()[1][3] |
||||||
|
) |
||||||
|
) |
||||||
|
|
||||||
|
return SegmentOverride.NoOverride |
||||||
|
|
||||||
|
|
||||||
|
def get_override_for_segment(self, user, plugin_class_instance, plugin_instance): |
||||||
|
''' |
||||||
|
Given a specific user, plugin class and instance, return the current |
||||||
|
override. This is a wrapper around get_override_for_classname() and |
||||||
|
provides the appropriate duck-checking and is therefore more useful as |
||||||
|
an external entry-point into the segment_pool. |
||||||
|
''' |
||||||
|
|
||||||
|
if not self.segments: |
||||||
|
self.discover() |
||||||
|
|
||||||
|
if (hasattr(plugin_class_instance, 'allow_overrides') and |
||||||
|
plugin_class_instance.allow_overrides and |
||||||
|
hasattr(plugin_instance, 'configuration_string')): |
||||||
|
|
||||||
|
segment_class = plugin_class_instance.__class__.__name__ |
||||||
|
segment_config = plugin_instance.configuration_string |
||||||
|
|
||||||
|
return self.get_override_for_classname(user, segment_class, segment_config) |
||||||
|
|
||||||
|
return SegmentOverride.NoOverride |
||||||
|
|
||||||
|
|
||||||
|
def _get_sorted_copy(self): |
||||||
|
''' |
||||||
|
Returns the SegmentPool as a list of tuples sorted appropriately for |
||||||
|
human consumption in *the current language*. This means that the |
||||||
|
_(NAME) value should determine the sort order of the outer dict and |
||||||
|
the _('segment_config') key should determine the order of the inner |
||||||
|
dicts. In both cases, the keys need to be compared in the provided |
||||||
|
language. |
||||||
|
|
||||||
|
Further note that the current language is given by get_language() and |
||||||
|
that this will reflect the CMS operator's user settings, NOT the current |
||||||
|
PAGE language. |
||||||
|
|
||||||
|
NOTE: that the structure of the sorted pool is different. Two of the |
||||||
|
nested dicts are now lists of tuples so that the sort can be retained. |
||||||
|
|
||||||
|
_sorted_segments = [ |
||||||
|
(/class/, { |
||||||
|
NAME: _(/name/), |
||||||
|
CFGS: [ |
||||||
|
(/configuration_string/, { |
||||||
|
LABEL: _(/configuration_string/), |
||||||
|
OVERRIDES: { |
||||||
|
/user.id/: /SegmentOverride enum value/, |
||||||
|
... |
||||||
|
}, |
||||||
|
INSTANCES: [ ... ] |
||||||
|
}) |
||||||
|
] |
||||||
|
}) |
||||||
|
] |
||||||
|
|
||||||
|
NOTE: On Python 3.0+ systems, we depend on pyuca for collation, which |
||||||
|
produces excellent results. On earlier systems, this is not available, |
||||||
|
so, we use a cruder mapping of accented characters into their |
||||||
|
unaccented ASCII equivalents. |
||||||
|
''' |
||||||
|
|
||||||
|
sort_key = None |
||||||
|
if sys.version_info >= (3, 0): |
||||||
|
uca = None |
||||||
|
# |
||||||
|
# Unfortunately, the pyuca class–which can provide collation of |
||||||
|
# strings in a thread-safe manner–is for Python 3.0+ only |
||||||
|
# |
||||||
|
try: |
||||||
|
from pyuca import Collator |
||||||
|
uca = Collator() |
||||||
|
sort_key = uca.sort_key |
||||||
|
except: |
||||||
|
pass |
||||||
|
|
||||||
|
if not sort_key: |
||||||
|
# |
||||||
|
# Our fallback position is to use a more simple approach of |
||||||
|
# mapping 'accented' chars to latin equivalents before sorting, |
||||||
|
# this is crude, but better than nothing. |
||||||
|
# |
||||||
|
from .unaccent import unaccented_map |
||||||
|
|
||||||
|
def sort_key(s): |
||||||
|
return s.translate(unaccented_map()) |
||||||
|
|
||||||
|
pool = self.segments |
||||||
|
clone = [] |
||||||
|
for cls_key in sorted(pool.keys()): |
||||||
|
cls_dict = { |
||||||
|
self.NAME: pool[cls_key][self.NAME], |
||||||
|
self.CFGS: list(), |
||||||
|
} |
||||||
|
clone.append(( cls_key, cls_dict )) |
||||||
|
# We'll build the CFG as a list in arbitrary order for now... |
||||||
|
for cfg_key in pool[cls_key][self.CFGS]: |
||||||
|
cfg_dict = { |
||||||
|
self.LABEL: pool[cls_key][self.CFGS][cfg_key][self.LABEL], |
||||||
|
self.OVERRIDES: dict(), |
||||||
|
self.INSTANCES: list(), |
||||||
|
} |
||||||
|
for username, override in pool[cls_key][self.CFGS][cfg_key][self.OVERRIDES].items(): |
||||||
|
cfg_dict[self.OVERRIDES][username] = override |
||||||
|
for instance in pool[cls_key][self.CFGS][cfg_key][self.INSTANCES]: |
||||||
|
cfg_dict[self.INSTANCES].append(instance) |
||||||
|
cls_dict[self.CFGS].append( (cfg_key, cfg_dict) ) |
||||||
|
# |
||||||
|
# Now, sort the CFGS by their LABEL, using which every means we |
||||||
|
# have available to us at this moment. |
||||||
|
# |
||||||
|
cls_dict[self.CFGS] = sorted(cls_dict[self.CFGS], key=lambda x: sort_key(force_text(x[1][self.LABEL]))) |
||||||
|
|
||||||
|
return clone |
||||||
|
|
||||||
|
|
||||||
|
def get_registered_segments(self): |
||||||
|
''' |
||||||
|
This is the interfact for obtaining a copy of the pool. It is returned |
||||||
|
sorted for the current language. |
||||||
|
''' |
||||||
|
|
||||||
|
if not self.segments: |
||||||
|
self.discover() |
||||||
|
|
||||||
|
lang = get_language() |
||||||
|
if not lang in self._sorted_segments: |
||||||
|
self._sorted_segments[lang] = self._get_sorted_copy() |
||||||
|
|
||||||
|
return self._sorted_segments[lang] |
||||||
|
|
||||||
|
|
||||||
|
def get_segments_toolbar_menu(self, user, toolbar, csrf_token): |
||||||
|
''' |
||||||
|
Returns a CMSToolbar "Segments" menu from the pool. |
||||||
|
''' |
||||||
|
|
||||||
|
# |
||||||
|
# NOTE: This is usually when the discovery process starts. |
||||||
|
# |
||||||
|
if not self.segments: |
||||||
|
self.discover() |
||||||
|
|
||||||
|
pool = self.get_registered_segments() |
||||||
|
|
||||||
|
num_overrides = self.get_num_overrides_for_user(user) |
||||||
|
|
||||||
|
if num_overrides: |
||||||
|
segment_menu_name = _('Segments ({num:d})'.format(num=num_overrides)) |
||||||
|
else: |
||||||
|
segment_menu_name = _('Segments') |
||||||
|
|
||||||
|
segment_menu = toolbar.get_or_create_menu( |
||||||
|
'segmentation-menu', |
||||||
|
segment_menu_name |
||||||
|
) |
||||||
|
|
||||||
|
for segment_class_name, segment_class in pool: |
||||||
|
segment_name = segment_class[self.NAME] |
||||||
|
|
||||||
|
segment_class_menu = segment_menu.get_or_create_menu( |
||||||
|
segment_class_name, |
||||||
|
segment_name |
||||||
|
) |
||||||
|
|
||||||
|
for config_str, config in segment_class[self.CFGS]: |
||||||
|
|
||||||
|
user_override = segment_pool.get_override_for_classname( |
||||||
|
user, |
||||||
|
segment_class_name, |
||||||
|
config_str |
||||||
|
) |
||||||
|
|
||||||
|
config_menu = SubMenu(config[self.LABEL], csrf_token) |
||||||
|
segment_class_menu.add_item(config_menu) |
||||||
|
|
||||||
|
for override, override_label in SegmentOverride.overrides_list: |
||||||
|
if override == SegmentOverride.NoOverride: |
||||||
|
# We don't really want to show the 'No override' as an |
||||||
|
# actionable item. |
||||||
|
continue |
||||||
|
|
||||||
|
active = bool(override == user_override) |
||||||
|
|
||||||
|
if active: |
||||||
|
# Mark parent menus active too |
||||||
|
config_menu.active = True |
||||||
|
segment_class_menu.active = True |
||||||
|
|
||||||
|
if (override != user_override): |
||||||
|
override_value = override |
||||||
|
else: |
||||||
|
override_value = SegmentOverride.NoOverride |
||||||
|
|
||||||
|
config_menu.add_ajax_item( |
||||||
|
override_label, |
||||||
|
action=reverse('admin:set_segment_override'), |
||||||
|
data={ |
||||||
|
'segment_class': segment_class_name, |
||||||
|
'segment_config': config_str, |
||||||
|
'override': override_value, |
||||||
|
}, |
||||||
|
active=active, |
||||||
|
on_success=toolbar.REFRESH_PAGE |
||||||
|
) |
||||||
|
|
||||||
|
segment_menu.add_item(Break()) |
||||||
|
reset_ajax_item = AjaxItem( |
||||||
|
_('Reset all segments'), |
||||||
|
# TODO: This should not use a named pattern |
||||||
|
action=reverse('admin:reset_all_segment_overrides'), |
||||||
|
csrf_token=csrf_token, |
||||||
|
data={}, |
||||||
|
disabled=bool(num_overrides == 0), |
||||||
|
on_success=toolbar.REFRESH_PAGE |
||||||
|
) |
||||||
|
segment_menu.add_item(reset_ajax_item) |
||||||
|
|
||||||
|
|
||||||
|
def __str__(self): |
||||||
|
''' |
||||||
|
Returns the whole segment_pool structure. Useful for debugging. Not |
||||||
|
much else. |
||||||
|
''' |
||||||
|
|
||||||
|
return self.segments |
||||||
|
|
||||||
|
|
||||||
|
segment_pool = SegmentPool() |
||||||
@ -0,0 +1,44 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
|
||||||
|
from django.db.models.signals import post_save, pre_delete |
||||||
|
from django.dispatch import receiver |
||||||
|
from django.core.exceptions import ImproperlyConfigured |
||||||
|
|
||||||
|
from cms.exceptions import PluginAlreadyRegistered, PluginNotRegistered |
||||||
|
from .segment_pool import segment_pool |
||||||
|
from ..models import SegmentBasePluginModel |
||||||
|
|
||||||
|
|
||||||
|
@receiver(post_save) |
||||||
|
def register_segment(sender, instance, created, **kwargs): |
||||||
|
''' |
||||||
|
Ensure that saving changes in the model results in the de-registering (if |
||||||
|
necessary) and registering of this segment plugin. |
||||||
|
''' |
||||||
|
|
||||||
|
if isinstance(instance, SegmentBasePluginModel): |
||||||
|
if not created: |
||||||
|
try: |
||||||
|
segment_pool.unregister_segment_plugin(instance) |
||||||
|
except (PluginAlreadyRegistered, ImproperlyConfigured): |
||||||
|
pass |
||||||
|
|
||||||
|
# Either way, we register it. |
||||||
|
try: |
||||||
|
segment_pool.register_segment_plugin(instance) |
||||||
|
except (PluginAlreadyRegistered, ImproperlyConfigured): |
||||||
|
pass |
||||||
|
|
||||||
|
|
||||||
|
@receiver(pre_delete) |
||||||
|
def unregister_segment(sender, instance, **kwargs): |
||||||
|
''' |
||||||
|
Listens for signals that a SegmentPlugin instance is to be deleted, and |
||||||
|
un-registers it from the segment_pool. |
||||||
|
''' |
||||||
|
|
||||||
|
if isinstance(instance, SegmentBasePluginModel): |
||||||
|
try: |
||||||
|
segment_pool.unregister_segment_plugin(instance) |
||||||
|
except (PluginNotRegistered, ImproperlyConfigured): |
||||||
|
pass |
||||||
@ -0,0 +1,64 @@ |
|||||||
|
# -*- coding: latin-1 -*- |
||||||
|
# Notice the encoding string above! |
||||||
|
# |
||||||
|
|
||||||
|
# $Id$ |
||||||
|
# use a dynamically populated translation dictionary to remove accents |
||||||
|
# from a string |
||||||
|
# |
||||||
|
# This was originally borrowed from: |
||||||
|
# http://svn.effbot.org/public/stuff/sandbox/text/unaccent.py |
||||||
|
# |
||||||
|
|
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
import unicodedata, sys |
||||||
|
|
||||||
|
CHAR_REPLACEMENT = { |
||||||
|
# latin-1 characters that don't have a unicode decomposition |
||||||
|
0xc6: u"AE", # LATIN CAPITAL LETTER AE |
||||||
|
0xd0: u"D", # LATIN CAPITAL LETTER ETH |
||||||
|
0xd8: u"OE", # LATIN CAPITAL LETTER O WITH STROKE |
||||||
|
0xde: u"Th", # LATIN CAPITAL LETTER THORN |
||||||
|
0xdf: u"ss", # LATIN SMALL LETTER SHARP S |
||||||
|
0xe6: u"ae", # LATIN SMALL LETTER AE |
||||||
|
0xf0: u"d", # LATIN SMALL LETTER ETH |
||||||
|
0xf8: u"oe", # LATIN SMALL LETTER O WITH STROKE |
||||||
|
0xfe: u"th", # LATIN SMALL LETTER THORN |
||||||
|
} |
||||||
|
|
||||||
|
## |
||||||
|
# Translation dictionary. Translation entries are added to this |
||||||
|
# dictionary as needed. |
||||||
|
|
||||||
|
class unaccented_map(dict): |
||||||
|
|
||||||
|
## |
||||||
|
# Maps a unicode character code (the key) to a replacement code |
||||||
|
# (either a character code or a unicode string). |
||||||
|
|
||||||
|
def mapchar(self, key): |
||||||
|
ch = self.get(key) |
||||||
|
if ch is not None: |
||||||
|
return ch |
||||||
|
if sys.version_info >= (3, 0): |
||||||
|
de = unicodedata.decomposition(chr(key)) |
||||||
|
else: |
||||||
|
de = unicodedata.decomposition(unichr(key)) |
||||||
|
if de: |
||||||
|
try: |
||||||
|
ch = int(de.split(None, 1)[0], 16) |
||||||
|
except (IndexError, ValueError): |
||||||
|
ch = key |
||||||
|
else: |
||||||
|
ch = CHAR_REPLACEMENT.get(key, key) |
||||||
|
self[key] = ch |
||||||
|
return ch |
||||||
|
|
||||||
|
if sys.version >= "2.5": |
||||||
|
# use __missing__ where available |
||||||
|
__missing__ = mapchar |
||||||
|
else: |
||||||
|
# otherwise, use standard __getitem__ hook (this is slower, |
||||||
|
# since it's called for each character) |
||||||
|
__getitem__ = mapchar |
||||||
@ -0,0 +1,7 @@ |
|||||||
|
{% load segmentation_tags %}{% comment %} |
||||||
|
|
||||||
|
NOTE: child_plugins is a list of tuples of the form (instance, Boolean) |
||||||
|
where, instance is the child plugin instance and Boolean represents |
||||||
|
whether the plugin should be rendered in this context. |
||||||
|
|
||||||
|
{% endcomment %}{% for child in child_plugins %}{% render_segment_plugin child.0 child.1 %}{% endfor %} |
||||||
@ -0,0 +1,2 @@ |
|||||||
|
{% load cms_tags %} |
||||||
|
{% for child in instance.child_plugin_instances %}{% render_plugin child %}{% endfor %} |
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue