Для поиска объектов без учета регистра можно использовать фильтр iexact.
https://docs.djangoproject.com/en/1.8/ref/models/querysets/#std:fieldlookup-iexact
Blog.objects.get(name__iexact='beatles blog')
Blog.objects.get(name__iexact=None)
Во view можно использовать следующую конструкцию
def location(request, location_name):
curLocation = get_object_or_404(Location, name__iexact=location_name)
return render(
request,
'app/location.html',
RequestContext(request,
{
'title':'About',
'location': curLocation
})
)
вторник, 11 августа 2015 г.
Case-insensitive шаблоны URL в Django
Чтобы шаблоны URL в Django не были чувствительны к регистру необходимо добавить (?i) в начало шаблона.
urlpatterns = patterns('',
(r'^(?i)admin/(.*)', admin.site.root),
(r'^(?i)static/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.STATIC_DOC_ROOT, 'show_indexes': True}),
(r'^(?i)login/$', 'django.contrib.auth.views.login'),
(r'^(?i)logout/$', do_logout),
)
urlpatterns = patterns('',
(r'^(?i)admin/(.*)', admin.site.root),
(r'^(?i)static/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.STATIC_DOC_ROOT, 'show_indexes': True}),
(r'^(?i)login/$', 'django.contrib.auth.views.login'),
(r'^(?i)logout/$', do_logout),
)
воскресенье, 19 июля 2015 г.
Обновление pip в Windows
При обновлении pip через команду
pip install --upgrade pip
возникает ошибка Access is denied при обращении к временной директории AppData.
Решение:
Используйте для обновления утилиту easy_install.
easy_install -U pip
понедельник, 10 ноября 2014 г.
Пакетное удаление проектов DQS
http://social.technet.microsoft.com/wiki/contents/articles/14065.delete-dqs-projects-created-from-running-ssis-dqs-cleansing-activities.aspx#Description
Automated TSQL Script Approach
In the case where there are too many projects to manually delete, you may use the TSQL script described here to automate the cleanup for a certain date range.
1. The script uses a date and time range to target the project deletion to a scope of time.
2. The script bulk deletes Data Quality projects according to the ‘Type’ flag which is set to 3 by default (1 = KB, 2 = Cleansing project DQS Client, 3 = SSIS Project)
3. The script deletes project in both Locked and Unlocked states.
4. If a project fails to delete, the script continues to delete the remaining projects.
5. Printed text output shows progress of the deletions and any errors which occur.
2. The script bulk deletes Data Quality projects according to the ‘Type’ flag which is set to 3 by default (1 = KB, 2 = Cleansing project DQS Client, 3 = SSIS Project)
3. The script deletes project in both Locked and Unlocked states.
4. If a project fails to delete, the script continues to delete the remaining projects.
5. Printed text output shows progress of the deletions and any errors which occur.
Instructions
1. The Windows account executing the TSQL script should have a ‘dqs_administrator’ role; we recommend the account to have a sysadmin role on the box.
2. Run the script from SQL Server Management Studio while connected to SQL Server instance running the DQS instance (hosting the DQS_MAIN and DQS_PROJECTS databases)
3. Modify the ‘FromDate’ and ‘ToDate’ dates and times in the script to define the window for cleansing up the projects
2. Run the script from SQL Server Management Studio while connected to SQL Server instance running the DQS instance (hosting the DQS_MAIN and DQS_PROJECTS databases)
3. Modify the ‘FromDate’ and ‘ToDate’ dates and times in the script to define the window for cleansing up the projects
TSQL Code
SET
NOCOUNT
ON
USE DQS_MAIN
DECLARE
@FromDate datetime
DECLARE
@ToDate datetime
DECLARE
@ProjectId
bigint
DECLARE
@LockClientId
bigint
DECLARE
@DqProject varbinary(
max
)
DECLARE
@ResultRecords varbinary(
max
)
,@ErrMessage
VARCHAR
(
max
)
,@rowcount
INT
,@errCount
INT
= 0
--Update From date and To date here before execution of script
SELECT
@FromDate =
CAST
(
'2012-10-19 00:00:01.001'
AS
datetime)
SELECT
@ToDate =
CAST
(
'2012-10-19 23:59:59.997'
AS
datetime)
PRINT
'***************************************************************'
PRINT
CAST
(GETDATE()
AS
VARCHAR
(
MAX
)) +
' :: '
+
'Executing script for date range '
+
CAST
(@FromDate
AS
VARCHAR
(
MAX
)) +
' to '
+
CAST
(@ToDate
AS
VARCHAR
(
MAX
))
DECLARE
DELETE_PROJECTS_CURSOR
CURSOR
FOR
SELECT
[ID],
ISNULL
([LOCK_CLIENT_ID],-1)
FROM
[DQS_Main].[dbo].[A_KNOWLEDGEBASE]
WHERE
[TYPE] = 3
-- BatchDQProject, projects that are generated by SSIS packages
AND
[CREATE_DATE]
BETWEEN
@FromDate
AND
@ToDate
OPEN
DELETE_PROJECTS_CURSOR
FETCH
NEXT
FROM
DELETE_PROJECTS_CURSOR
INTO
@ProjectId, @LockClientId
WHILE @@FETCH_STATUS = 0
BEGIN
BEGIN
TRY
PRINT
CAST
(GETDATE()
AS
VARCHAR
(
MAX
)) +
' :: '
+
'Operating on Project: ['
+
CAST
(@ProjectId
AS
VARCHAR
(
MAX
)) +
']'
EXECUTE
[KnowledgebaseManagement].[SetDataQualitySession] @clientId=@LockClientId, @knowledgebaseId=
NULL
IF (@LockClientId != -1)
BEGIN
EXECUTE
[KnowledgebaseManagement].[DQProjectGetById] @ProjectId,@DqProject
OUTPUT
EXECUTE
[KnowledgebaseManagement].[DQProjectExit] @DqProject,@ResultRecords
OUTPUT
END
-- delete project's activity archive
DELETE
FROM
[dbo].[A_PROFILING_ACTIVITY_ARCHIVE]
WHERE
[ACTIVITY_ID]
IN
(
SELECT
ID
FROM
[dbo].[A_KNOWLEDGEBASE_ACTIVITY]
WHERE
[KNOWLEDGEBASE_ID] = @ProjectId)
-- refresh the project state
EXECUTE
[KnowledgebaseManagement].[DQProjectGetById] @ProjectId,@DqProject
OUTPUT
PRINT
CAST
(GETDATE()
AS
VARCHAR
(
MAX
)) + ' ::
' + '
Deleting project: [
' + CAST(@ProjectId AS VARCHAR(MAX)) +'
]
'
EXECUTE [KnowledgebaseManagement].[DQProjectDelete] @DqProject
PRINT CAST(GETDATE() AS VARCHAR(MAX)) + '
::
' + '
Deleted project: [
' + CAST(@ProjectId AS VARCHAR(MAX)) +'
]
'
END TRY
BEGIN CATCH
PRINT CAST(GETDATE() AS VARCHAR(MAX)) + '
::
' + '
An error has occurred
with
the following details
'
PRINT CAST(GETDATE() AS VARCHAR(MAX)) + '
::
' + '
Error
' + CONVERT(varchar(50), ERROR_NUMBER()) +
'
, Severity
' + CONVERT(varchar(5), ERROR_SEVERITY()) +
'
, State
' + CONVERT(varchar(5), ERROR_STATE()) +
'
,
Procedure
' + ISNULL(ERROR_PROCEDURE(), '
-
') +
'
, Line
' + CONVERT(varchar(5), ERROR_LINE());
PRINT CAST(GETDATE() AS VARCHAR(MAX)) + '
::
' + '
Error Message:
' + ERROR_MESSAGE();
SELECT @errCount = @errCount + 1
PRINT CAST(GETDATE() AS VARCHAR(MAX)) + '
::
' + '
Skipping this project because
of
errors
'
END CATCH
FETCH NEXT FROM DELETE_PROJECTS_CURSOR INTO @ProjectId, @LockClientId
END
IF @errCount > 0
PRINT CAST(GETDATE() AS VARCHAR(MAX)) + '
::
' + '
Script completed
with
' + CAST(@errCount AS VARCHAR(MAX)) + '
errors
'
ELSE
PRINT CAST(GETDATE() AS VARCHAR(MAX)) + '
::
' + '
Script completed successfully
'
PRINT '
***************************************************************'
BEGIN
TRY
CLOSE
DELETE_PROJECTS_CURSOR
DEALLOCATE
DELETE_PROJECTS_CURSOR
END
TRY
BEGIN
CATCH
--Do nothing
END
CATCH
среда, 18 июня 2014 г.
Подключение дополнительных репозиториев CentOS6
http://howtoit.ru/linux/centos/item/15-podklyuchenie-repozitoriev-centos-6-epel-rpmforge-remi.html
В для репозитория EPEL в x64 ОС использовать адрес
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
В для репозитория EPEL в x64 ОС использовать адрес
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
понедельник, 24 марта 2014 г.
Обзор визуальных плагинов Leaflet. Часть 2.
Leaflet-Semicircle
Расширяет функционал L.Circle, позволяет помещать на карту окружности ограниченные по радиусам.
Демо доступно по адресу http://jieter.github.io/Leaflet-semicircle/example-semicircle.html
Leaflet.functionaltilelayer
Плагин позволяет переопределять логику URL запросов для тайловых слоев.
var funcLayer = new L.TileLayer.Functional(function (view) {
var url = 'http://otile{3}.mqcdn.com/tiles/1.0.0/map/{0}/{1}/{2}.jpg'
.replace('{0}', view.zoom)
.replace('{1}', view.tile.row)
.replace('{2}', view.tile.column)
.replace('{3}', view.subdomain);
return url;
});
Leaflet.geoCSV
Позволяет загружать данные из файлов типа CSV.
L.geoCsv(null,{ titles: ['lat', 'lng', 'popup'], fieldSeparator: ';', lineSeparator: '\n', deleteDobleQuotes: true, firstLineTitles: false, onEachFeature: function (feature, layer) { var popup = ''; for (var clave in feature.properties) { var title = geo_csv.getPropertyTitle(clave); popup += '<b>'+title+'</b><br />'+feature.properties[clave]+'<br /><br />'; } layer.bindPopup(popup); }});
Данные
48.8566;2.3522;París, capital de Francia40.4168;-3.7038;Madrid, capital de España41.9015;12.4608;Roma, capital de Italia37.9837;23.7293;Atenas, capital de GreciaДемо доступно по адресу http://joker-x.github.io/Leaflet.geoCSV/example/options-test/index.html
Leaflet.PolylineDecorator
Позволяет задавать шаблон для линий полигона (штриховая, стрелки, иконки и т.п.).
Позволяет делать цветные маркеры.
leaflet.bouncemarker
Позволяет делать маркер, которые "подскакивает" при добавлении на карту.
Leaflet.TextPath
Позволяет создавать Polyline, который состоит их текстовых элементов.
Leaflet.awesome-markers plugin v2.0
Позволяет создавать красивые маркеры на базе Glyphicons и Font-Awesome icons.
Leaflet Data Visualization Framework
Позволяет помещать на карту маркеры в виде диаграмм и графиков на базе SVG.
Leaflet.TileLayer.Grayscale
Позволяет добавлять тайловый слой в серой гамме. Фактически, заменяет изображения Canvas с обработанным рисунком из оригинального тайла.
Позволяет просматривать тайловые изображения.
Leaflet.Graticule
Позволяет добавлять на карту слой с градусной сеткой.
Leaflet UserMarker
Расширение стандартного маркера, позволяет устанавливать "точность" - полупрозрачную окружность вокруг маркера и включать/выключать пульсацию маркера.
Leaflet EdgeMarker
Позволяет добавлять на карту специальные маркеры вдоль границ карты для обозначения расположения маркеров, которые не входят в видимую зону.
leaflet.shapefile
Позволяет загружать данные через JavaScript на карту из ESRI Shapefile.
leaflet.FileGDB
Позволяет добавлять данные из ESRI fgdb файлов.
Leaflet.Terminator
Позволяет добавлять тесные области на карту, например день-ночь.
Leaflet.FeatureSelect
Добавляет на карту специальный маркер, при пересечении с которым будут подсвечиваться геометрические объекты карты такте как: Points, LineStrings, Polygons, MultiPoints, MultiLineStrings, и MultiPolygons. Поддерживает GeoJson слои.
Leaflet.MakiMarkers
Позволяет добавлять на карту маркеры из библиотеки Maki markers.
Editable Polylines plugin
Позволяет добавлять на карту plyline с возможность перетаскивания ее точек.
leaflet-omnivore
Библиотека JavaScrip из набора MapBox. Позволяет добавлять на карту векторы из следующих форматов: CSV, GPX, KML, WKT, TopoJSON.
Leaflet.TileLayer.IIP
Один из самых новых плагинов. Позволяет работать с тайловыми изображениями в формате IIP, предназначенном для изображений с высоким разрешением, например космические снимки.
Обзор визуальных плагинов Leaflet. Часть 1.
Leaflet.ellipse
Позволяет помещать на карту эллипсы с указанными координатами центра, размерами полуосей и углом наклона.

Адрес примера и описание http://jdfergason.github.io/Leaflet.Ellipse.
Leaflet.Plotter
Плагин позволяет создавать пути на карте, есть возможность создавать новые точки внутри пути и перетаскивать существующие.
Адрес ресурса https://github.com/scripter-co/leaflet-plotter
Leaflet.markercluster
Позволяет группировать значения точек на карте.
Позволяет работать с большими наборами точек.
Leaflet.label
Позволяет привязывать текстовые комментарии и фигуры к векторным объектам карты.
Существует альтернативная версия плагина Leaflet.iconlabel.
RaphaelLayer
Позволяет помещать на карту объекты, созданные в библиотеке векторной графики JavaScript Raphaël.
OverlappingMarkerSpiderfier-Leaflet
Позволяет перекрывать большое количество маркеров в одной точке одним маркером. При клике на такой маркер появляется красивое отображение перекрытых значений.
TileLayer.BoundaryCanvas
Позволяет отображать часть карты, ограниченной указанной геометрической фигурой.
Leaflet MaskCanvas
Позволяет создавать Canvas слой для отображения большого количества данных на карте.
HeatCanvas
Позволяет добавлять "тепловую карту". Для построения использует стили CSS3 и классы divIcon.
heatmap.js
Позволяет добавлять "тепловую карту" на базе Canvas HTML5.
Leaflet divHeatmap Layer
Легковесный плагин для создания "тепловой карты" используя CSS3 и divIcon.
WebGL Heatmap
Высокопроизводительный плагин для создание "тепловой карты" с использованием WebGL.
Leaflet.MultiTileLayer
Дозволяет комбинировать тайловые слои в одном слое на карте.
var map = L.map('map').setView(L.latLng(57.7, 11.9), 12);
L.TileLayer.multi({
14: {
url: 'http://otile{s}.mqcdn.com/tiles/1.0.0/osm/{z}/{x}/{y}.png',
subdomains:'1234'
},
17: {
url: 'http://server.arcgisonline.com/ArcGIS/'
'rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}'
}
}, {
minZoom: 0,
maxZoom: 17,
attribution: 'Tiles Courtesy of <a href="http://www.mapquest.com/">MapQuest</a> — '
'© <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, '
'<a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>'
'— '
'Tiles © Esri — '
'Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, '
'Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community'
}).addTo(map);
Leaflet.AnimatedMarker
Позволяет создавать движущиеся маркеры на карте.
Демо доступно по адресу http://openplans.github.io/Leaflet.AnimatedMarker
Подписаться на:
Сообщения (Atom)