== Version 2.5.8 == Users side : ------------ # In list-views, columns related to sub-fields of ManyToManyFields were sortable ; it caused crashes & other strange behaviors. # In EntityFilter : - There was an issue with sub-filters & ManyToManyFields (entities could be displayed several times in the list-view). - The description of conditions with ForeignKey + "is not empty" has been fixed. # The image entity selector was broken on Chrome: the newly uploaded file was not selected. # A small issue in the password reset system has been fixed ; the confirmation page still displayed a 'submit' button when the link was not valid anymore. # Apps : * Creme_config : - The cursor's style in custom forms' configuration has been improved (to indicate that drag'n drop is enabled). Developers side : ----------------- Non breaking changes : ---------------------- # The view which returns choices for enumerable models uses credentials with CremeEntities. == Version 2.5.7 == Users side : ------------ # The HTML directive to not be indexed by search engine has been added. # Some validation issues with bulk-edition have been fixed. It could be observed when editing several Invoices at once for example. # There were permissions issues with EntityFilters & HeaderFilters ; public filters could be edited/deleted by users with no app permission. # The selector with lazy-loading should perform less queries (delay raised to 300ms). # There was a broken link in CremePropertyType detail-view. # In the "About" page : - the IRC address has been fixed. - the version is displayed only when you are authenticated. # Apps : * Billing : - The button to delete Payment Information (on Organisations' detail-views) was broken. * Reports : - The date filter in the download popup was broken. * Mobile : - A hard-coded URL pattern has been fixed (to use the reverse pattern matching as usual). * Assistants : - The code of Alert has been improved (a query is avoided when creating a CremeEntity). Developers side : ----------------- Non breaking changes : ---------------------- # The management of Brick classes with old 'id_' attribute has been improved. # The debounce delay of 'creme_core.forms.enumerable.EnumerableSelect' can be configured. # Apps : * Billing : - The conversion view is more robust (the relationship creation could crash). == Version 2.5.6 == Users side : ------------ # There were several issues with fields configured as required. It could notably appeared in quick forms: - Fields which were added (because they are not in the default forms) cause a validation error. - Fields corresponding to a ForeignKey caused an error 500. # The block which displays all relationships, & the configurable blocks related to one type of relationship, have been fixed to order more correctly entities. It fixes some pagination issues with PostgreSQL. # Several issues in the detail-view for property type have been fixed : - Global buttons were missing (to go to the configuration page & to create a new type). - The credentials for the buttons are now correct. - Disabled buttons are not clickable anymore, & their style has been improved. # Apps : * Activities : - In "My settings", the brick with Calendars is not displayed at all for users which cannot access to the app "Activities". * Billing : - The lib 'xhtml2pdf' has been upgraded to the version '0.2.15'. * Emails : - Some permissions checks in the email & lightweight email history bricks were missing. - In "My settings", the brick with Signatures is not displayed at all for users which cannot access to the app "Emails". Developers side : ----------------- Non breaking changes : ---------------------- # Apps : * Email : - The class-view 'views.sending.SendingBricksReloading' now checks permissions. * Commercial : - The view 'views.strategy.BaseEvaluatedOrganisationView' has been improved to be easier to modify. - The class-view 'views.strategy.MatrixBricksReloading' now checks permissions. Internal breaking changes : --------------------------- (they should not cause problem if you have not deeply modified the source code of Creme) # The method 'creme_core.models.fields_config.FieldsConfig.update_form_fields()', now takes a form instance, and can set the '_meta' attribute. == Version 2.5.5 == UPGRADE NOTE : - You should re-generate the media files (creme generatemedia --settings=[...]). Users side : ------------ # Some fields associated to a static list of values (attributes "choices" in Python) are not proposed by the Batch-Process form anymore. # A style issue in FireFox, in the form for displayed user's name, has been fixed. # A bug in brick reloading has been fixed (it crashes with several invalid IDs). # Apps : * Documents : - In new installations, Folders had no "assistants" bricks on their detail-view. * Billing : - The order of lines was incorrect in exported data (PDF, xls): the order set manually with drag'n drop was not used. - An crash in the configuration of export (when the configured engine was not installed anymore) has been fixed. Developers side : ----------------- Non breaking changes : ---------------------- # The widget 'creme_core.forms.header_filter.EntityCellsWidget' has been fixed to enable complex HTML representations produced by field printers. Breaking changes : ---------------------- # No HistoryLine with is created while the auxiliary instance is not reloaded. It could cause some unit tests (which check history) to fail. # Apps : * Billing : - The method 'models.base.Base.get_lines()' only accepts model with an "order" field. So if you created a custom line model which does not inherit 'models.line.Line' you should add this field. == Version 2.5.4 == Users side : ------------ # Some icons in theme 'icecream' were accidentally passed in greyscale mode with the release <2.5.3>. # The style of very long menu entries has been improved. == Version 2.5.3 == UPGRADE NOTE : - You should re-generate the media files (creme generatemedia --settings=[...]). Users side : ------------ # Some issues with bad callback URLs on edition views after a bricks reloading have been fixed. Note: sadly, this fix makes the context of the visitor mode easier to lost ("Back" in your browser to get it back). # In the merge view : - There were issues with ManyToMany fields. - An error 500 , when one entity did not exist anymore, has been fixed. # The listview popup to select new mangers/employees & entity to merge has been fixed : now the entities remain filtered even with order or page change. # In the theme "Chantilly" : - The style of messages for empty blocks was not consistent. - An icon "Restore" was missing. # Apps : * Assistants : - The UserMessages not related to an entity were not viewable. * Activities : - In mass-import, the Calendar selected by default was not always the default Calendar. Developers side : ----------------- Non breaking changes : ---------------------- # An issue, when passing an empty array to CheckListSelect widget, has been fixed. # A customizable reload URL has been added to EntitiesList views. # Many missing sizes for icon have been added (could be useful for custom apps). # Apps : * Activities : - The deletion of Activity was not possible (the relationships "subject of activity" prevented it). - An issue in the deepcopy of the property 'ActivitySubTypeField.limit_choices_to' has been fixed : it was lost and the choices not filtered. * Opportunities : - Some bricks (products/services/quote..) did not accept specific columns. == Version 2.5.2 == Users side : ------------ # There were several issues with "Date" CustomFields : - They were not usable in filters (because they were proposed with "normal" custom-fields). - Their quick-search (i.e. in header of list-views) was disabled. # Apps : * Opportunities : - A button could be wrongly disabled in the "Managers" brick. * Emails : - The button to delete SMTP configuration for campaign was broken. Developers side : ----------------- Non breaking changes : ---------------------- # The method 'creme_core.models.CremeUser.has_perm_to_link()' with a ContentType as argument has been fixed; it could return 'True' even when the model was related to a forbidden app. # Apps : * Activities : - CalendarController : - Fix an issue in 'day' view. But disable it in the button list. - New option 'allowEventMove' that allows to disable the drag-n-drop of events. - New option 'fullCalendarOptions' to customize FullCalendar. - New option 'defaultView' to force the initial view of FullCalendar. == Version 2.5.1 == Users side : ------------ # The disabled RelationTypes were still proposed in the popup-form of the Relationships' brick. # The command "creme_uninstall" was crashing. # Apps : * Creme_config : - In the users' configuration : - An error happened in the edition form when transforming a superuser into a regular one. - The style of disabled users was broken (in theme "icecream" & "chantilly"). * Persons : - The summary's title for Opportunities in "card" hat-bricks was not always displaying the number of Opportunities. Developers side : ----------------- Non breaking changes : ---------------------- # The method 'BrickDetailviewLocation.__str__()' crashed with hat bricks. == Version 2.5 == UPGRADE NOTE : - You should create a all new virtual environment based on Python 3.8+ . Users side : ------------ # The version of Django has been upgraded to "4.2". # A visitor mode has been added; from any list-view, you can visit all the related detail-views the one after the other. (button "Enter the exploration mode" in list-views). # The link in the list-views selectors are now opened in other tabs automatically. # In forms : - The custom fields with ENUM/MULTI_ENUM type are now using the Select2 combobox with lazy loading & search. - In the form for entity-filters : - The regular fields corresponding to foreign keys ('Sector', 'Status', ...) are now using the Select2 combobox with lazy loading & search. - The regular fields with static choices (like 'Discount' in billing lines) are now using combobox instead of a text input. # Apps : * Creme_config : - Each CustomForm can now be reset (to set the fields it would have have after a fresh installation). - In the Users' configuration page : - The displayed name of Users can now be customised (per user); each used can change its own displayed name by default (& you can disable this feature). - When creating a new user, usernames which differ only in case are rejected. - Displayed Users can be filtered (by user-name, first name, last name & new field displayed-name). - Enumerable custom fields are using the Select2 widget in forms. * Persons : - The UI forbids to clone managed Organisations. * Activities : - A color field has been added to Status. * Billing : - The Product/Service lines can be reordered by drag'n drop. - The mass-import can now import entities with their totals (a Product line is created). - A color field has been added to Statuses. * Emails : - The SMTP server used to send campaign is now configured through the GUI; indeed you can configure several ones. These variables are not used anymore (excepted during the migrations from Creme 2.4): - EMAILCAMPAIGN_HOST - EMAILCAMPAIGN_HOST_USER - EMAILCAMPAIGN_PASSWORD - EMAILCAMPAIGN_PORT - EMAILCAMPAIGN_USE_TLS - The blocks for signatures (in "My settings") displays now a preview. * Opportunities : - A color field has been added to SalesPhase. * Reports : - The horizontal stacked bar chart (creme.D3TubeChart) has been improved : - The horizontal scrolling of legend is enabled when the list is wider than the canvas. - The text wrapping for legend text has been added. - The bar's text is visible only on mouse hover if it is too small. * Sketch : - In the bar char (creme.D3BarChart), the horizontal scrolling is enabled when the bars are wider than the canvas. - In the donut chat (creme.D3DonutChart) : - The vertical scrolling of legend is enabled when the list is taller than the canvas. - The slice text is visible only on mouse hover if it is too small. * Tickets : - A color field has been added to Status. Developers side : ----------------- - The version of 'Django' is now "4.2". You should probably read the following releases notes for Django versions : - https://docs.djangoproject.com/en/4.2/releases/4.0/ Some important items : - The 'settings.py' value 'USE_L10N' is now deprecated. - The 'settings.py' value ALLOWED_HOSTS must be a list. - In classes inheriting 'django.template.Node', the method 'render()' must return a string. - https://docs.djangoproject.com/en/4.2/releases/4.1/ Some important items : - The method 'assertFormError()' should now take a form instance. - The logout view should be used with a POST request. - A reverse FK now raises ValueError when calling related managers for unsaved objects. - https://docs.djangoproject.com/en/4.2/releases/4.2/ Some important items : - Attributes 'index_together' of your Meta classes should be replaces by 'indexes'. - Beware to the argument 'update_fields' in your custom methods 'save()' for models. - New versions of libraries : - bleach 5.0 -> 6.0 - Pillow 9.2+ -> 9.4+ - redis: 4.1 -> 4.5 - flake8: 5.0 -> 6.0 - polib: 1.1 -> 1.2 Non breaking changes : ---------------------- # A new context processor 'creme.creme_core.context_processors.get_base_template' injects now the new settings.py variable 'BASE_HTML' (default value: "creme_core/base.html"). All pages which extended "creme_core/base.html" have been updated to use this variable. So you can now customise the base structure of the pages, because your our own base template can extend "creme_core/base.html" (i.e. you do not have to override it with a copy-pasted version anymore). # In order to allow the resetting of CustomForms, the good way to describe the fresh configuration is to use the new class 'creme.creme_core.gui.custom_form.CustomFormDefault' & stop describing the fields in the "populate" scripts (so the fields are listed only once, & forms built by "populate" scripts & the resetting view will be the same). So, IF YOU DEFINED CUSTOMFORMS for your own models, you SHOULD : - create classes inheriting 'CustomFormDefault', and use them when creating your descriptors (argument "default"). - in your 'Populator', remove the argument "groups_desc" of 'CustomFormConfigItem.objects.create_if_needed()'. The section "CustomForms" of the tutorials has been updated (& you can see how vanilla apps are made of course). # Deprecations : - In 'creme_core.core' : - In the class 'entity_cell.EntityCell' (& child classes), the methods 'render_html()' & 'render_csv()' are deprecated; use 'render()' instead. - In the class 'function_field.FunctionFieldResult' (& child classes), the methods 'for_html()' & 'for_csv()' are deprecated; use 'render()' instead. - In 'creme_core.forms' : - The method 'base.HookableFormMixin.as_span()' is deprecated; use 'as_div()'/'as_ul()'/... instead. - The classes 'fields.CremeUserChoiceField' & 'fields.CremeUserChoiceIterator' are deprecated; use 'CremeUserEnumerableField' instead. - In the class 'creme_core.gui.field_printers._FieldPrintersRegistry' : - The method 'register()' is deprecated; use the method 'register_model_field_type()' instead. Hint: check if you defined 'register_field_printers()' in your own files "apps.py". (beware: the arguments are now keyword-only) : 'field_printers_registry.register_model_field_type(type=CharField, printer=my_print_function)' - The methods 'get_html_field_value()' & 'get_csv_field_value()' are now deprecated; use 'get_field_value()' instead. - In 'creme_core.templatetags.creme_cells', the argument "output" of '{% cell_render %} is deprecated; use "tag" instead. - The function 'creme_core.utils.dates.make_aware_dt()' is now deprecated; use 'django.utils.timezone.make_aware()' instead. - In templates : - In the file "creme_core/base.html", the '{% block extrahead %}' is deprecated; use the new '{% block head %}' with '{{block.super}}' instead. - The file "creme_core/generics/error.html" is deprecated. - In the 'creme_core.tests': - In the class 'base._CremeTestCase' : - The method 'login()' is deprecated; use the new methods 'login_as_*()' (plus 'create_user()' & 'get_root_user()' if you need several users) instead. - Passing no "user" argument to the method 'build_request()' is deprecated. - Passing no "user" argument to the methods 'views.base.MassImportBaseTestCaseMixin._build_*doc() is deprecated. - Apps : * Creme_config : - The class 'forms.fields.CustomEnumChoiceField is deprecated; use 'CreatorCustomEnumerableChoiceField' instead. * Activities : - In 'constants', 'DEFAULT_CALENDAR_COLOR' & 'COLOR_POOL' are deprecated. - In 'models.calendar' : - The method 'CalendarManager.new_color()' is deprecated. - The method 'Calendar.get_color()' is deprecated; use 'Calendar.color' instead. # You can now register a field-printer for a specific field. Example (in your "apps.py") : def register_field_printers(self, field_printers_registry): field_printers_registry.register_model_field( model=Contact, field_name='last_name', printer=my_lastname_printer, ) # In 'creme_core.forms.enumerable' : - In the class 'EnumerableChoiceSet', the optional property 'url' allows to use any URL instead of only "creme_core__enumerable_choices". - A class 'FieldEnumerableChoiceSet' has been added; it inherits 'EnumerableChoiceSet' (which is now a base class) and has all its previous features (see the section ). - A new widget class 'EnumerableSelectMultiple' has been added; it supports multiple selection. # In the class 'creme_core.forms.widgets.DynamicSelect', the constructor accepts now an argument "avoid_empty". When it's set to 'True', the attribute "data-no-empty" is enabled on client-side. In order to keep the current behaviour of 'DynamicSelect' within a ChainedSelect widgets definition, add to all the instances of 'DynamicSelect' having a child dependency. # In 'creme_core.gui.button_menu', the rendering of Button has been reworked (see the section !); the verbose name of the button (often use for the button's label) is now always injected in the context ("{{button.verbose_name}}" to get it). # In 'creme_core.models' : - In 'CremeEntity' : - A JSON field 'extra_data' has been added; it can be used by third party code to store the data they want, without having to modify the code. - The method 'clone()' now avoids copying 'ManyToManyFields' which are tagged as (see '_clone_m2m()'). - A database index has been added to 'HistoryLine', in order to improve general performance with large volumes. # In 'creme_core.templatetags.creme_widgets', the templatetag '{% widget_entity_hyperlink %}' has a new optional argument "target". # In 'creme_core.tests' : - Several new assertions are now available: 'assertHasAttr()', 'assertHasProperty()', 'assertHasNoProperty()'. - An dummy email backend which stores 'args' & 'kwargs' is now used. # In Javascript: - 'creme.form.Select2' now supports the lazy loading of selections ; it's useful in entity filter polymorphic inputs that do not know the selected options beforehand. - New 'RGBColor.rgb()' method to handle CSS format : 'rgb(int, int, int)' # Apps : * Sketch : - A function 'creme.d3NumericDataInfo()' which creates the following stats from data has been added : min, max, only integers, value range, average. - The functions 'creme.d3NumericFormat()' & 'creme.d3NumericAxisFormat()' have been added to find the best format from data information. - A render function 'creme.d3Scroll()' has been added to handle horizontal or vertical scrolling of an SVG node. - An issue in the renderer 'creme.d3LegendRow', which is visible in D3TubeChart (legend without labels), has been fixed. - The function 'creme.d3ColorRange()' now accepts a function; it's useful for computed ranges. Breaking changes : ------------------ # The minimum version of Python has been upgraded to "3.8". # Deprecated stuffs which have been removed : - In 'creme_core.forms.fields.SelectorList', the constructor's parameter & attribute "enabled" has been removed ; the context variable "clonelast" is not injected anymore. - In 'creme_core.gui' : - In 'bricks.BricksManager' : - The attribute '_dependencies_map' has been removed. - The method '_build_dependencies_map()' has been removed. - The property 'used_relationtypes_ids' has been removed. - In the class 'button_menu.Button', the attribute "id" must be filled & used instead of "id_". - In 'field_printers', the functions 'print_date()' & print_datetime() have been removed. - In 'creme_core.models' : - The method 'bricks.RelationBrickItemManager.create_if_needed()' has been removed. - The method 'relation.Relation.populate_real_object_entities()'' has been removed. - The method 'search.SearchConfigItemManager.iter_for_models()' does not return unsaved instances for models without configuration (these models are just ignored). - In 'creme_core.utils' : - The functions 'find_first()' & 'split_filter()' have been removed. - The function 'imports.import_object()' has been removed. - The JavaScript component 'creme.form.Chosen' has been removed. - Apps : * Activities : - In 'forms.fields', the classes 'ActivityTypeField' & 'ActivityTypeWidget' have been removed. - The method 'models.AbstractActivity.as_ical_event()' has been removed. - The view class 'views.activity.TypeChoices' (URL named "activities__get_types") has been removed. * Emails : - In the class 'emails.models._Email' : - 'Status.SYNCHRONIZED_SPAM' & 'Status.SYNCHRONIZED_WAITING' have been removed. - 'SYNCHRONIZATION_STATUSES' has been removed. * Graphs : - The class 'bricks.GraphBarHatBrick' & the related template file "graphs/bricks/graph-hat-bar.html" have been removed. - In 'models' : - the method 'AbstractGraph.generate_png()' has been removed. - the method 'RootNode.get_relation_types()' has been removed. - The function-view 'views.graph.dl_png()' has been removed. * Reports : - The templatetag 'reports_graph_ordinate' has been removed. * Products : - In 'forms.fields', the classes 'CategoryField' & 'CreatorCategorySelector' have been removed. - The function-view 'views.product.get_subcategories()' (URL named "products__subcategories") has been removed. # In 'creme_core.apps', the method 'CremeCoreConfig.hook_select_template()' has been removed. It means that the template of 'Select' is not overriden by default anymore (you can use the new class 'creme_core.forms.widgets.PrettySelect'). # In 'creme_core.core' : - In 'entity_cell' : - In the class 'EntityCellRegularField', the attributes '_printer_html' & '_printer_csv' have been removed. - In the class 'EntityCellCustomField' : - The class attribute '_EXTRA_RENDERERS' has been reworked. - The method '_get_renderer()' has been removed. - In 'setting_key', the constructor of '_SettingKey' (& so 'SettingKey' & 'UserSettingKey') takes now its arguments with keywords only. # In 'creme_core.forms' : - In 'creme_property', these classes have been renamed : - '_AddPropertiesForm' => '_PropertiesForm'. - 'AddPropertiesForm' => 'PropertiesAddingForm'. - 'AddPropertiesBulkForm' => 'PropertiesBulkAddingForm'. - In 'entity_filter' : - These classes have been renamed : - 'EntityFilterCreateForm' => 'EntityFilterCreationForm'. - 'EntityFilterEditForm' => 'EntityFilterEditionForm'. - The widget class 'enumerable.EnumerableSelectMultiple' is now used for regular-field conditions of EntityFilter instead of 'DynamicSelectMultiple'. - In 'enumerable' : - The constructor of class 'EnumerableChoiceSet' has changed; it requires now an 'Enumerator' instead of a model 'Field' and an 'EnumerableRegistry'. - The 'FieldEnumerableChoiceSet' has a lazy 'url' property that uses the "creme_core__enumerable_choices" provided by the new property 'default_url'. - 'EnumerableChoiceField' has been split into : - a base class 'EnumerableChoiceField' that accepts an 'EnumerableChoiceSet' - a new 'EnumerableChoiceModelField' that inherits 'EnumerableChoiceField' and keeps the previous behaviour. - In 'fields' : - The method 'DateRangeField.compress()' returns an instance of 'creme_core.utils.date_range.DateRange' (it was a tuple) ; notice that the method 'clean()' already returned a DateRange. - In class 'DurationField', the methods 'compress()' & 'clean()' now return an instance of 'datetime.timedelta' (it was a string until now). - In class 'OptionalField' (and so in child classes 'OptionalChoiceField'/'OptionalModelChoiceField') : - the methods 'compress()' & 'clean()' now return an instance of 'OptionalField.Optional' (it was a tuple until now). - the data sub-field is always . - the method '_build_subfield()' only receive keyword arguments. - In 'header_filter', these classes have been renamed : - 'HeaderFilterCreateForm' => 'HeaderFilterCreationForm'. - 'HeaderFilterEditForm' => 'HeaderFilterEditionForm'. - In 'mass_import' : - In the class 'RegularFieldExtractorField', the attribute '_can_create' has been removed. - In the method 'RegularFieldExtractor.set_subfield_search()', the argument 'create_if_unfound' has been replaced by 'creation_form_class'. - In 'relation', these classes have been renamed : - '_RelationsCreateForm' => '_RelationsForm'. - 'RelationCreateForm' => 'RelationsAddingForm'. - 'MultiEntitiesRelationCreateForm' => 'RelationsBulkAddingForm'. # In 'creme_core.gui' : - In 'bricks' : - In the class 'Brick' (& so, all the child classes you defined), the attribute "id" must be filled & used instead of "id_". - The only argument of '_BrickRegistry.get_brick_4_object()' is now positional only. - In 'button_menu', the rendering of Button has been reworked : - The method 'render()' has been removed; use 'get_context()' instead. - The method 'has_perm()' has been removed; use 'is_allowed()' instead. - In the related template, the way to get data in the context has changed; for all variables returned by the method 'get_context()' of your buttons (like "verbose_name", "description" and the ones you added of course), use the inner-context "button": Example: "{{description}}" becomes "{{button.description}}". Beware: "{{has_perm}}" has been renamed "{{button.is_allowed}}". - In 'field_printers' : - These global objects have been removed : - print_foreignkey_html, print_foreignkey_csv - print_many2many_html, print_many2many_csv - These functions have been removed : - simple_print_csv() - print_decimal_csv() - print_boolean_csv() - print_date_csv() - print_datetime_csv() - The class 'M2MPrinterForCSV' has been removed. - These methods have been removed : - FKPrinter.print_fk_entity_text() - M2MPrinterForHTML.printer_html(), M2MPrinterForHTML.printer_entity_html() - _FieldPrintersRegistry._build_field_printer() - The signature of the printer functions/methods (i.e. named '[simple_]print_*') has changed : - the arguments are now keyword-only (because there are lots of arguments). - the argument "entity" has been renamed "instance" (because printers can be used on non-CremeEntity instances). - the argument "fval" has been renamed "value". - The methods 'enumerator_*' of the class 'BaseM2MPrinter' have changed : - the arguments are now keyword-only. - the argument "entity" has been renamed "instance". - the argument "fval" has been renamed "manager". - The methods 'printer_*' of the classes 'M2MPrinterForHTML' & 'M2MPrinterForCSV' have changed : - the arguments are now keyword-only. - the argument "related_entity" has been renamed "related_instance". - the argument "fval" has been renamed "manager". - In the method 'FileFieldPrinterForHTML._render_download()', the argument "entity" has been renamed "instance". # In 'creme_core.models', the only argument of the following methods is now positional only : - RelationType.is_compatible() - custom_field.CustomFieldManager.compatible() - custom_field.CustomFieldManager.get_for_model() # In the class 'creme_core.tests.base._CremeTestCase' : - The method 'http_file()' has been removed; see the note about 'creme_core.utils.test.CremeDiscoverRunner' below. - The method 'create_user()' does not set the password by default anymore; you have to fill the argument "password" explicitly (hint: use if you want to login with the returned user. # In 'creme_core.urls' : - The URL 'creme_core__efilter_user_choices' has changed and follows the pattern 'users/{ct_id}/{field}/json[/]?$' like the default enumerable choices URL. # In 'creme_core.utils' : - The only argument of the function 'content_type.as_ctype()' is now positional only. - In 'html', the global variables 'ALLOWED_TAGS' & 'ALLOWED_STYLES' are now sets (they were lists) (see bleach 6.0). - In 'test' : - The function 'http_port()' has been removed. - The class 'CremeDiscoverRunner' does not spawn an HTTP server (for static files) anymore. You should use mocking if you want to test code which retrieves files with HTTP (see in 'vcfs' or 'geolocation)'. The attribute '_http_server' & the method '_clean_http_server()' have been removed. # In templates : - The template "creme_core/templatetags/menu_buttons.html" has been removed. - In 'creme_core/header/menu-base.html', {% block accessories %} has moved inside the "
" element. # The method 'creme_core.tests.base._CremeTestCase.build_request()' takes now its arguments as keywords only. # In Javascript : - 'creme.widget.DynamicSelect' widget does not select the first option as default behaviour. A new argument 'data-no-empty' is needed. - 'creme.form.Select2' accepts the 'data-no-empty' attribute: select the first option as default if the value is empty. # Apps : * Creme_config : - The method 'bricks.UserSettingValuesBrick.detailview_display()' changed the data injected in "values_per_app" (2-tuples => 3-tuples). - In 'forms', many classes have been renamed in these modules: bricks, button_menu, creme_property_type, fields_config, relation_type, user. - In JavaScript, 'creme.creme_config.MenuContainersController' has been renamed 'creme.MenuContainersController'. * Documents : - Some constants have been moved : - 'UUID_DOC_CAT_IMG_ORGA' & 'UUID_DOC_CAT_IMG_CONTACT' to the app 'persons'. - 'UUID_DOC_CAT_IMG_PRODUCT' to the app 'products'. - 'UUID_FOLDER_CAT_EMAILS' to the app 'emails'. - In 'gui', the functions 'print_fk_image_html()' & 'print_doc_summary_html' have been fixed with the new printers signature. * Activities : - In 'forms' : - In 'bricks', these classes have been renamed : - 'ParticipantCreateForm' => 'ParticipantsAddingForm'. - 'SubjectCreateForm' => 'SubjectsAddingForm'. - The value returned by the method 'bulk_update.ActivityRangeField.clean()' is now an instance of 'ActivityRangeField.DateRange' (it was a list). - In 'fields' : - The value returned by the method 'UserParticipationField.clean()' has changed (see 'creme_core.forms.fields.OptionalField'). - The value returned by the method 'DateWithOptionalTimeField.clean()' is now an instance of 'DateWithOptionalTimeField.DateWithOptionalTime' (it was a tuple). - A 'ValueError' is raised when you try to create a not custom 'ActivitySubType' related to a custom 'ActivityType' (in it was just a log). - The class 'utils.PytzToVtimezone' has been removed. * Emails : - The constant 'SETTING_EMAILCAMPAIGN_SENDER' & the object 'setting_keys.emailcampaign_sender' have been removed. The related instance of 'SettingValue' is removed from DB by a migration. - The form 'forms.sending.SendingCreateForm' has been replaced by a new one, 'SendingCreationForm'. - The attribute 'utils.EMailSender._mime_images' has been removed. * Billing : - In 'forms', these classes have been renamed : - 'credit_note.CreditNotePopupEditForm' => 'CreditNotePopupEditionForm'. - 'line.LineEditForm' => 'LineEditionForm'. - 'line.BaseLineEditFormset' => 'BaseLineEditionFormset'. - 'payment_information.PaymentInformationCreateForm' => 'PaymentInformationCreationForm'. - 'payment_information.PaymentInformationEditForm' => 'PaymentInformationEditionForm'. - The function 'utils.print_discount()' has been fixed with the new printers signature. * Commercial : - In 'forms', several classes have ben renamed : - 'commercial_approach.ComAppCreateForm' => 'ComAppCreationForm'. - 'strategy.SegmentCreateForm' => 'SegmentCreationForm'. - 'strategy.SegmentEditForm' => 'SegmentEditionForm'. - 'strategy.SegmentLinkForm' => 'SegmentLinkingForm'. * Assistants : - The class 'forms.alert.ModelRelativeDatePeriodField.ModelRelativeDatePeriod' is now a frozen dataclass. * Mobile : - In 'forms', these classes have been renamed : - 'MobileContactCreateForm' => 'MobileContactCreationForm'. - 'MobileOrganisationCreateForm' => 'MobileOrganisationCreationForm'. * Graphs : - The template "graphs/graph_error.html" has been removed. * Tickets : - In 'models.status.BASE_STATUS', the tuples contain an additional column for colors. * Projects : - In 'forms', several classes have ben renamed : - 'resource.ResourceCreateForm' => 'ResourceCreationForm'. - 'resource.ResourceEditForm' => 'ResourceEditionForm'. - 'task.RelatedActivityCreateForm' => 'RelatedActivityCreationForm'. - 'task.RelatedActivityEditForm' => 'RelatedActivityEditionForm'. - 'task.TaskAddParentForm' => 'TaskParentsAddingForm'. * Polls : - In 'forms', several classes have ben renamed : - 'poll_form.PollFormLineCreateForm' => 'PollFormLineCreationForm'. - 'poll_form.PollFormSectionCreateForm' => 'PollFormSectionCreationForm'. - 'poll_form.PollFormSectionEditForm' => 'PollFormSectionEditionForm'. - 'poll_reply.PollRepliesCreationForm' => 'PollRepliesCreationForm'. - 'poll_reply.PollReplyEditForm' => 'PollReplyEditionForm'. - In the template "polls/bricks/preplies.html", the block '{% block poll_replies_extra_rows %}' has been removed; use '{{block.super}}' instead. * CTI : - The function 'utils.print_phone_html()' has been fixed with the new printers signature. * SMS : - The class 'forms.message.SendingCreateForm' has been renamed 'SendingCreationForm'. Internal breaking changes : --------------------------- (they should not cause problem if you have not deeply modified the source code of Creme) # In the class 'creme_core.gui.field_printers._FieldPrintersRegistry', the following attributes have been removed/replaced : _html_printers, _csv_printers, _printers_maps, _choice_printers. # In the class 'creme_core.templatetags.creme_cells.CellRenderNode', the class attribute 'RENDER_METHODS' has been removed. # Apps : * Emails : - The constant 'utils._MIME_IMG_CACHE' has been removed. == Version 2.4 == UPGRADE NOTE : - You should create a all new virtual environment based on Python 3.7+ . - If you used the emails synchronisation in Creme2.3, you should finish to flush the list of untreated emails (i.e. mark them as synchronised or spam) before upgrading to Creme 2.4 . Users side : ------------ # The users can now change their own password, and reset their lost password. These 2 features can be disabled in the new page "Configuration of the instance". # The setting 'USE_L10N' is now set to 'True' by default (previously only 'False' was working). So, by default, the formats for dates & times depend on the user's language. # The inner-edition (i.e. edition of one field directly in the detail-view) can now handles several fields at once. It's used for example in the relationships-blocks (the blocks displaying the entities linked by a specific relationship type) when you configure the fields to display: all displayed fields are edited with one form (so you avoid many clicks). # In the History's block, lines related to entities from apps you cannot view are excluded. # A periodic job which removes the deprecated users' sessions has been added. # The combo-boxes with autocompletion now use the JavaScript library "Select2". Their look'n feel has slightly changed, & for compatible models with a lot of choices, the loading & search are now done lazily. Almost all small auxiliary models defined in apps (ticket Status, Sector…) are compatible ; 'user' model is compatible too. # The old color picker 'gccolor' has been replaced by the standard HTML5 color input (less bug, less code). # The version of the shipped Closure compiler has been upgraded (2020-01-12 => 2022-09-05). # Two new variables have been added in 'settings.py' : - SOFTWARE_LABEL is "Creme" by default. - ENTITIES_DELETION_ALLOWED can disable the definitive deletion of entities. It's true by default (deletion is allowed), & staff user can always delete entities (to fix privacy issue for example). # The command "creme_start_project" has been improved to get a 'setup.py' that works (if you want to install your project in your virtual environment). # Apps : * Creme_config : - The email addresses of active users must be unique. - The menu icon can now be customised. - The menu can be customised per role. - The relationship types have been improved : - Non-internal types can now be disabled. - A new kind of constraints has been added : forbidden properties (on subject & object of course). - An edition view for semi-fixed relationship types has been added. - The roles can now be cloned ; you can chose to copy the configurations of bricks/menu/custom-forms/search. - The old password is required when changing a user's password. - The configurations of CustomForms are collapsed by default, & can be expanded separately. * Assistants : - The trigger date of an Alert can now be relative to a date field of the linked entity (e.g. "3 days before its birthday"). Relative trigger dates are automatically updated when the date field changes. - The owner of Alerts & ToDos can now be dynamic, to always send emails to the entity's owner. * Activities : - The sub-type of Activities must now be filled. Notice that a migration creates sub-types for types which are used in Activities with NULL sub-type. - The relationships type "is subject of the activity" is now internal. - In creation form, when an Alert with a trigger date relative to the Activity's start is created, the new feature is used. So the trigger date is finally updated when the Activity's start is modified (a very old annoying behaviour disappears). - The inner-edition is now available for these fields: start, end, is_all_day, busy. Notice that they are always edited all together with a composite widget. - The iCal export has been reworked. * Emails : - The synchronisation of external emails has been totally reworked & separated from the app "crudity". This feature allows Creme to fetch emails from some mailboxes to potentially create true Email entities (e.g. you send a mail, with your usual mail client, to a customer & to the synchronisation address, then you get this mail in Creme). - Now the mail servers are configured with a GUI (it was in 'settings.py'). - IMAP4 is supported (only POP3 was). - Mails are in a sandbox, & entities are created only when you accept them (instead of using the status "Synchronized - Untreated"). - Attachments can be ignored, or removed before the mail is transformed into an entity. - ... BEWARE: if you used this feature in Creme 2.3, you'll have to remove the configuration in your settings (it's not supported anymore) & re-create it in the GUI. * Reports : - The reports now are displaying new charts using the JavaScript library "D3js" which comes with many improvements : - Performance improvements (native SVG). - Charts are following layout changes like resizing the window. - No longer limited for the creation of custom charts (see 'Relationship graph' brick below). - The 'USE_JQPLOT' setting allows to fallback to JQplot if needed, and will be removed with the release of . * Persons : - The Organisation's bricks "Managers" & "Employees" propose now to edit the related contacts, using the new multi-fields inner-edition feature. * Products : - In 'models', the fields 'Category.description' & 'SubCategory.description' are not mandatory anymore. * Billing : - When a Quote is converted to an Invoice, a relationship is now created between them. * Opportunities : - The bricks "Linked Contacts" & "Business managers" display now these fields for the related contacts: position, email, phone, mobile. They propose to edit them too, using the new multi-fields inner-edition feature. * Graphs : - A new 'Relationship graph' brick is available, displaying the graph in the detail-view without having to download an image. Notice it can be downloaded as image too. * Mobile : - An "owner" field is now present in forms to create Contacts & Organisations. * Polls : - The design of the 'Statistic' brick has changed. * Crudity : - The support of InfoPath files has been removed. * Geolocation : - Map markers now display more information when hovered: the actual address information. The title's importance has also been reduced, as it's usually less useful on a map than the address itself. Developers side : ----------------- - 'jQuery' 3.6.0 migration : - Remove 'jquery.uuid' & 'jquery.debounce' (replaced by underscore). - New dependency 'underscorejs 1.13.2'. - The version of 'floathead' is now "2.2.4". - The version of 'jquery-ui' is now "1.13.1". - 'Chosen' to 'Select2' migration : - New dependency 'Select2 4.0.13' - 'Sortable.js' was upgraded from "1.10.2" to "1.15.0". - New app called "Sketch" : - New dependency 'd3js 5.16.0'. - New dependency 'filesaver 2.0.4' (customized). Non breaking changes : ---------------------- # Deprecations : - In 'creme_core.forms.fields.SelectorList', the constructor's parameter & attribute "enabled" are deprecated ; use to disable instead (backported to Creme 2.3). The context variable "clonelast" is deprecated too. - In 'creme_core.gui' : - In 'bricks.BricksManager' : - The attribute '_dependencies_map' is deprecated. - The method '_build_dependencies_map()' is deprecated. - The property 'used_relationtypes_ids' is deprecated. - In 'field_printers', these functions are now deprecated : - print_date() - print_datetime() - In 'creme_core.models' : - The method 'bricks.RelationBrickItemManager.create_if_needed()' is deprecated. - The method 'Relation.populate_real_object_entities()'' is deprecated ; use 'Relation.objects.prefetch_related("real_object")' instead. - In 'creme_core.utils' : - The function 'find_first()' is deprecated ; use the builtin 'next()' instead. - The function 'split_filter()' is deprecated ; use 'django.utils.functional.partition()' instead (beware the lists 'are returned in the reverse order). - The function 'imports.import_object()' is deprecated ; use 'django.utils.module_loading.import_string()' instead. - Apps : * Activities : - In 'forms.fields', the classes 'ActivityTypeField' & 'ActivityTypeWidget' are deprecated. - The method 'models.AbstractActivity.as_ical_event()' is deprecated. - The view class 'views.activity.TypeChoices' (corresponding to the URL named "activities__get_types") is deprecated. - In 'utils', the functions 'get_ical_date()' & 'get_ical' are deprecated ; use 'ICalEncoder' instead. * Emails : - In the class 'emails.models._Email' : - 'Status.SYNCHRONIZED_SPAM' & 'Status.SYNCHRONIZED_WAITING' are deprecated. - 'SYNCHRONIZATION_STATUSES' is deprecated. * Graphs : - The class 'bricks.GraphBarHatBrick' is deprecated ; the related template file "graphs/bricks/graph-hat-bar.html" is deprecated too. - In 'models' : - The method 'AbstractGraph.generate_png()' is deprecated. - The method 'RootNode.get_relation_types()' is deprecated. - The function-view 'views.graph.dl_png()' is deprecated. * Reports : - The templatetag 'reports_graph_ordinate' is now deprecated ; use 'models.ReportGraph.verbose_ordinate()' instead. * Products : - In 'forms.fields', the classes 'CategoryField' & 'CreatorCategorySelector' are deprecated ; use 'fields.SubCategoryField' instead. - The view 'products__subcategories' is deprecated ; use the generic one 'creme_core__enumerable_choices' instead. # In the class 'creme_core.auth.entity_credentials.EntityCredentials', the methods 'filter()' & 'filter_entities()' can now be called with a combination of permissions (like 'VIEW | CHANGE'). # In 'creme_core.models' : - A new abstract model 'base.Minion' has been created with fields uuid/is_custom/extra_data. Most of the small models which gravitate around entities have been converted in the different apps. - The class 'fields.RealEntityForeignKey' now have a method 'get_prefetch_queryset()' ; so the method 'Queryset.prefetch_related()' can be called with the name of a field of this type. - The method 'Relation.clean()' has been created ; it checks the different constraints (ContentType, CremeProperty). - The model 'FileRef' got a new JSONField called "extra_data" which can be used by third party code. # In 'creme_core.templatetags.creme_core_tags', the tag "print_field" can now store the output inside a variable with the classical keyword "as". # In 'creme_core.fields' : - A new 'enumerable.EnumerableChoiceField' for combo-box with both autocompletion and pagination has been added. It's extremely useful to prevent issues with huge numbers of MinionModel/CremeUser instances in your database. - A new 'CremeUserEnumerableField' has been added ; it replaces 'CremeUserChoiceField' when it's possible & can handle better big numbers of user instances. # In Javascript : - Some convenience actions for the "hatbarmenu" widget have been added : - 'creme_core-hatmenubar-view' - 'creme_core-hatmenubar-update' - 'creme_core-hatmenubar-form' - A new component 'creme.form.DropDown', which decorates a . - ... # JavaScript : some fallbacks for IE8 & 9 have been added. The support of IE 7 has been dropped. # The column titles in the list views are always up-to-date (before, they were computed during columns edition). # The error handling in inner popups has been improved. # A view for 409 errors has been created. # Apps : * Polls, a new app : - You can create a PollForm, which contains questions organised in sections, sub-sections etc... - Questions have a type (string, integer, boolean, enumeration...). - Questions can have conditions on previous questions : a question is activated only if its conditions are filled. - You can create several PollReplies from a PollForm, which snapshot the questions of the form. - A PollReply can be filled with a wizard, and answers can be edited later. - The PollReplies can be grouped by PollCampaigns. * Reports : * When you create a new Report, you can only select the columns from an existing HeaderFilter. * A new UI for the columns edition has been added, and it uses the work on the new HeaderFilter form. * ReportGraphs : - The form has been improved. Example : the field 'Is count' is already checked if there is no available aggregable field. - Only the ForeignKeys related to enumerable models are available (see the notes on 'enumerable' tag below) for the abscissa. - CustomFields are now available for abscissa & ordinate. - The graph design has been heavily enhanced. The data is emphasized by a clearer display : many useless/annoying visual elements were removed, legends are better, many glitches were fixed... * Several behaviours have been fixed : - The column titles are now always up-to-date (before, they were computed during columns edition). - The 1st level entities are filtered by credentials ('view' permission). - When a FK field is linked to a sub-report, if a related entity does not pass the subfilter, the line is not dropped any more (related values are just empty). - The flattened sub-reports (ie not expanded, see 'selected' attribute) in columns associated to ManyToManyField/ForeignKey/related fields are now used. - The flattened sub-reports manage now all types of columns. - The aggregates are computed in a scope (so result may be different with an aggregate in a sub-report). * Invalid columns are automatically removed (e.g. removed CustomField). * Activities, the calendar has been heavily improved : * The version of fullcalendar.js has been updated from 1.4.5 to 1.4.7. * A new menu has been created, with : - Floating activities ; they can be drag n' dropped on the calendar, and filtered by their name. - All your calendars & the public calendars of all the other users. Several calendars can be shown together (they have different colors) and they can be filtered by their name, or the first name and last name of their owner. * Billing : - The creation and the edition of billing lines have been redesigned, in order to use more client side computation. - A new field 'acceptation_date' (DateField) has been added to the Quote model. - A new field 'pending_payment' (BooleanField) has been added to the InvoiceStatus model. - 3 function fields are dynamically added by the 'billing' app to the models Organisation and Contact : - Total of pending payment. - Total number of won quotes this year. - Total number of won quotes last year. * Opportunities : - Opportunity.target field is now editable. * Products: - 'images' are now displayed in a true block (Products & Services). * Projects : - The Project.name field is not nullable anymore. Developers side : ----------------- Non breaking changes : ---------------------- # A new field tag has been created : 'enumerable'. When a ForeignKey is tagged as enumerable, it means that the related model can be enumerated, ie there are a limited number of instances. Eg : persons.models.Position are enumerable, but not persons.models.Address. # JavaScript : * A basic object derivation support (see creme.component.Component) has been added. * A simple event handling tool (creme.component.EventHandler) has been added. * The 'disabled' attribute now works with widgets. * The following widgets use collection models and new rendering tools : - CheckListSelect. - PolymorphicSelect. - DynamicSelect. * The popup system has been refactored : - creme.utils.simpleConfirm() is deprecated ; use creme.dialogs.confirm() instead. - You should use creme.utils.showInnerPopup() only for compatibility with actual popup templates (see creme_core/templates/creme_core/inner_popup.html) - creme.dialog.Dialog is the new base dialog object. - creme.dialog.ConfirmDialog shows a message and has OK/Cancel buttons. - creme.dialog.FormDialog has Save/Cancel buttons and handles form errors. - creme.dialog.SelectDialog has OK/Cancel buttons and an API to return a value when it is closed. - Many helper functions were added in creme.dialogs. * The AJAX actions have been improved : - creme.utils.postNReload() is deprecated ; use creme.blocks.ajaxPOSTQuery() instead. - A new API for requests has been added : creme.ajax.Query. - Many helper functions were added in creme.utils and creme.blocks for AJAX actions with confirmation, reloading and error dialogs. # New form fields were added : MultiCTypeChoiceField & MultiEntityCTypeChoiceField. They use the cache of ContentType. # CremeEntityField & MultiCremeEntityField form fields are now deprecated ; ListViewWidget too. use CreatorEntityField & MultiCreatorEntityField instead. # The function creme_core.utils.Q_creme_entity_content_types() is now deprecated. # The old migration scripts have been folded. # Apps : * Activities : - Calendar now has a field 'color'. * Billing: - The following constants are deprecated : PERCENT_PK, AMOUNT_PK & DISCOUNT_UNIT. * Opportunities: - The methods Opportunity.get_target() & Opportunity.get_source() are now deprecated. * Reports : - The code has been heavily refactored, and a lot of work is now done in the new reports.core module. Breaking changes : ------------------ # The model HeaderFilterItem has been removed, & HeaderFilter now stores the columns in a new field called 'json_cells'. It contains a JSON serialisation of instances of the new class EntityCell (which is used by new configurable blocks too). So the HeaderFilter.create() static method has changed : it takes EntityCells instances now. # The global_info 'username' (string) has been replaced by 'user' (User instance). # The JavaScript function creme.utils.loadBlock() has been removed ; use creme.blocks.reload() instead. # 3 useless views in creme_core have been removed : - /creme_core/entity/get_fields - /creme_core/entity/get_function_fields - /creme_core/entity/get_custom_fields # The method Relation.update_links() has been removed (it was deprecated). # 2 Relation URLs have been modified : - /creme_core/relation/entity/.../predicates/json ==> /creme_core/relation/entity/.../rtypes/json - /creme_core/relation/predicate/.../content_types/json ==> /creme_core/relation/type/.../content_types/json # The function creme_core.utils.currency_format.currency() can now take a Currency instance instead of a Currency ID ; idem with the templatetag 'format_amount'. API breaking : 'currency_id' argument changed to 'currency_or_id'. # The unused form field _CommaMultiValueField has been removed. # Several elements in creme_core.utils.meta have been deleted : * The exception class NotDjangoModel. * The functions : - get_function_field_verbose_name. - get_related_field_verbose_name. - filter_entities_on_ct. - get_fk_entity. - get_m2m_entities. - _get_entity_column. # In titles of blocks (inside {%get_block_header%}) the "collapser" css class is no longer needed and will cause issues. # Apps : * Activities : - The field ActivityType.color has been removed. - The JS function creme.activities.calendar.setReadableColor() has been removed. * Media_managers : - ImageM2MWidget has been removed. * Billing : - The Vat model has been moved to creme_core. * Reports : * About the reports.Field model : - The field 'report' has been renamed to 'sub_report'. - The field 'title' has been removed. - A new ForeignKey field 'report' has been added in order to replace the field Report.columns (ManyToManyField). * Several useless templatetags were removed : - get_report_chart. - get_report_chart_selectors. - verbose_abscissa. - verbose_ordinate. * Emails : * Lots of changes in its JS file : - creme.reload_synchronisation() has moved to creme.ajax.reloadContent(). - creme.emails.mass_action() was replaced by creme.blocks.massAction() (arguments are different). - creme.emails.mass_relation() was replaced by creme.blocks.massRelation() (arguments are different). - creme.emails._processDone() has been removed. - creme.emails.resend() & creme.emails.confirmResend() have no 'url' & 'complete_cb' arguments anymore. == Version 1.3 == Users side : ------------ # Form widgets improvements : * New selector widgets, that can also create instances (and automatically select the newly created instances). - For small models, like persons.Sector or billing.InvoiceStatus (used almost everywhere). - For Entities, like the Document chosen in the CSV import (used only in a few places). * Auto-completion (thanks to chosen.js) in some widgets (Relationships creators). * Cache system used by some widgets (Relationships creators, Entities selectors). # New feature : Trash, that contains deleted Entities. These entities are generally not displayed (in list views for example), they have a different detailview, and can be definitively deleted. # Credentials improvements: * New implementation that is much faster (no more SQL JOIN). * The GUI to set the credentials has been improved. # History: new events are logged. - Relationship deletion. - Property deletion. - Creation, edition & deletion of auxiliary instances (ToDo, Bill line etc...). # The version of Django is now 1.4 : - All datetimes use now timezones. Each user can choose its own timezone in its configuration panel. - Translations contexts are now possible in the templates, so several labels have been fixed. # Entities can now be imported & exported with the XLS format (previously, only CSV format was available) ; thanks to libs 'xlrd' & 'xlwt'. # The theme 'Icecream' has been reworked (icons, css). # The 403 view has been improved : it is more beautiful, and it now displays the problematic dependencies when a deletion fails. # Many fallbacks for IE(7,8) were added. # Apps : * Activities : - PhoneCall, Meeting & Tasks models has been removed, their data were moved in the Activity model. - Activities can now have a SubType (e.g. 'Incoming' for PhoneCalls). - You can now omit the start & end dates (then, Activity is floating) or only give the dates but not the hours (floating time). - The Relationship "is subject of activity" is now only compatible with the following types : Contact, Organisation, Invoice, Quote, SalesOrder, Opportunity, Ticket. - There is no more popup to choose the RelationType when you create a related Activity (it is automatically chosen). * Reports : - You can click on the shapes of a graph to go to the corresponding list view. - The graph code uses now the lib 'jqplot'. - A new graph type is available : tube. - Reports can now be downloaded as XLS files (previously, only CSV format was available). * Persons : - 'Civility.short_cut' field has been added. - You can create billing & shipping addresses directly from their block. * Billing: - CSV import for Invoice/Quote/SalesOrder is now OK. - 'expiration_date' field is no more required in forms. * Opportunities : - The fields 'Origin.description' & 'SalesPhase.description' have been removed. - CSV import is now OK. * Commercial: - Objectives: Entities can now be counted with a Filter. * Documents : - 'Folder.description' field is now nullable (i.e. no more required). * VCFS : - Can export a Contact as a VCF file. Developers side : ----------------- # The project layout has changed with Django 1.4 : - Apps are imported with namespace 'creme' (e.g. 'creme.persons' instead of 'persons'). - The script 'manage.py' is now at the root of the project. # Root 'urls.py' generates now automatically urls of all Creme apps : so you don't have to modify this file when you add an app anymore. # Credentials changes: * Permissions method in CremeEntity are now deprecated, and replaced by new methods in User. - CremeEntity.can_*{_or_die} methods are deprecated : use User.has_perm_to_*{_or_die} methods instead. - CremeEntity.populate_credentials is deprecated (delete the uses, because they are now useless). * The view creme_core.views.generic.edit.edit_model_with_popup() checks now the CremeEntity edition credentials (when the given model is a CremeEntity of course). * The credentials on models are now possible (e.g. you can know if the user could link a Contact that is not created yet). # Lots of changes in creme_core.utils.meta : - New system of tags for models fields. Right now, 2 tags are available : 'viewable' & 'clonable'. - The following functions have been removed : get_flds_with_fk_flds(), get_flds_with_fk_flds_str(). - The following functions have been renamed : get_field_infos() became get_instance_field_info() get_model_field_infos() became get_model_field_info() # In CremeAbstractEntity class 'excluded_fields_in_html_output' and 'header_filter_exclude_fields' attributes have been removed (tags are used instead). # New attribute in CremeModel (so, in CremeEntity), 'creation_label', that contains the (localized) string used by forms, buttons etc... that create instances. # The code manages better the invalidation of model fields. HeaderFilters, EntityFilters & Histories check now at runtime if they handle invalid fields (and they modify themselves to ignore them). # New model field : 'CTypeForeignKey'. It uses the cache of ContentType manager, when ForeignKey(ContentType, ...) does not. # Unit tests for JavaScript code. # Blocks system : - Dependencies can be '*' (that means: "all models"). - New attribute 'read_only' (boolean) ; if it is set to True, reloading this block will not force the blocks which share its dependencies to be reloaded too. - The 2 previous features are used by creme_core.blocks.HistoryBlock. - New templatetag 'get_block_footer'. # Relation model: - The method update_links() is now deprecated. - The unused method getCreateLang() has been removed. - __unicode__() no more returns an HTML string. # The arguments of the command 'creme_populate' have changed, in order to be like other django commands. # New command : 'i18n_overload'. It can generate a .po file with all MSGIDs that contain a given word (in order to overload a term). - 'verbosity' is now an integer, given with 'verbosity=VERBOSITY' (no more '-v' argument). - App names are simply the final arguments (no more '-a' argument). # FormBlock has been improved : you can now iterate on blocks that have not been retrieved 'manually'. # The unused view '/creme_core/entity/json' has been removed. # The form widget 'UploadedFileWidget' has been removed. # The setting DEFAULT_EMAIL_FOR_REMIND has been deleted ; DEFAULT_USER_EMAIL is used instead. # Apps : * Opportunities : - Opportunity.emitter & Opportunity.target properties added. * Emails : settings have changed. - CREME_EMAIL_SERVER => EMAILCAMPAIGN_HOST - CREME_EMAIL_PORT => EMAILCAMPAIGN_PORT - CREME_EMAIL_USERNAME => EMAILCAMPAIGN_HOST_USER - CREME_EMAIL_PASSWORD => EMAILCAMPAIGN_PASSWORD - EMAILCAMPAIGN_USE_TLS => added - SENDING_SIZE => EMAILCAMPAIGN_SIZE - SENDING_SLEEP_TIME => EMAILCAMPAIGN_SLEEP_TIME * Reports : - The templatetags files 'report_tags.py' and 'graph_tags.py' have been merged in 'reports_tags.py' - Several templatetags have been removed: get_column_header, get_html_column_value, get_value_at. == Version 1.2 == Users side : ------------ # New inner edition feature : the most fields can be edited directly in the detail/list views. # A new view that merges 2 entities. # Light batch process : several entities returned by a filtered are modified with the same pattern : - String actions : 'To upper case', 'To lower case', 'Prefix', 'Suffix', 'Remove a sub-string'... - Integer actions : 'Add', 'Subtract', 'Multiply', 'Divide'. # New SemiFixedRelationType model that allows to accelerate the creation of Relation when one branch is always the same. # The deletion of small models (status/sector etc...) is better managed (protected or FK are set to NULL). # CSV import : the 'dialect' of the CSV file is now guessed. # Apps : * Emails : - The raw text and the HTML text of the bodies of emails (standalone ones and grouped by campaigns ones) can be written separately. - A standalone email can be created from a template as base. * Billing : - Line management was improved : you can create/edit/delete several lines at once. - Line fields can be edited directly. - Status of Invoice/Quote/Sales Order/Credit Note are ordered by config. - Numbers of Invoices are now editable, and all status can be chosen at creation. * Activities : - List views for meetings and phone calls. - Activities can be created directly in the Calendar view. - The view to add participants from the detailview of an Activity has been improved (it manages users like in the Activity creation view). * Assistants : - New FunctionFields for 'Todos', Memos' & 'Alerts'. * Opportunities : - Sales Phases are ordered by configuration. * Persons : - First name is no more required. - Siren is now unique or empty. - When the photograh is deleted, the Contact is no more deleted (FK is set to NULL). * Documents: - When a Folder is not empty, it can not be deleted any more (old behaviour: all the Documents in the Folder were deleted too). * Commercial: - The relationship type 'is related to the opportunity' has been removed. # Bug fixes : * Creme_config: only superusers can create/edit Users. * Activities: 'participates' relationship is now internal (to manage correctly Calendars). * Internal relationships are no more automatically cloned (e.g. it caused problems when cloning an Organisation targeted by an Invoice). * Some HTML escaping problems fixed. * ... Developers side : ----------------- # Upgrade to jquery 1.6.2 & jquery ui 1.8.15. # Improvements for FunctionFields (old API is broken) : * Return FunctionFieldResult objects (which can be easily serialised in HTML & CSV outputs). * Can now easily inject FunctionFields in a model. # In Billing app, the Line API was changed to be less error-prone (old API is broken). # Creme_config : handles automatically the ordering of models with a field 'order'. # The API of instance blocks has changed. # The API of BulkUpdateRegistry has changed. == Version 1.1 == Users side : ------------ # Blocks : * New blocks : - 'History' (timeline). - 'Received billing documents'. * Blocks with state (open/close & show/hide empty fields) : - Blocks are now faded when folded ; icon is reduced, and buttons reduced. - Empty fields can be hidden. * New blocks locations system : - Nearly all blocks are now configurable (can be placed, or even removed). - Detailviews : the blocks can be located on top, left side, right side or bottom. - Portal & home : are now separated from the content types blocks configuration. - New view "My page" : it looks like the "Home" view, but each user can set the present blocks. * All relations blocks are reloaded when a change occurs on a block dependent from relations. # Deletion of users (& teams) with files assignation to another user. # UI : * Improved scrolling for the side menu. * Portals have not yet the same name in the preferred menu. * Can delete all (allowed) relations on relation block in one click. * Lots of choices are now smartly ordered (e.g. predicates in relation creation popup). # Credentials improved : * Credentials by type of Entity (ContentType). * Exportable types credentials (to export a listview for these types as CSV files). # Theme manager ; 2 themes are embedded : the old one become "Chantilly", and a new one has been created ("Ice cream"). # Apps : * Crudity : - Crudity can handle forms submitted by infopath. - Multi-line in Crudity emails and better dates handling. - Crudity sandbox can be by user. - Parser improved. * Billing : currency management. For each billing Entity you choose the currency, and the displays of amounts are better. * Activesync : Can limit mobile synchronization to contacts or calendars. * Vcfs (NEW app) : you can now import a Contact (and the related Organisation) from a vCard. # Bug fixes : * Credentials problem in billing lines. * Billing lines were not added to the billing documents created from an Opportunity with related Products/Services. * Image file duplicated when an Image was edited. * ... Developers side : ----------------- # Helper methods to build HeaderFilterItem objects. # Template tag 'get_html_field_value' replaced by a new one, 'print_field'. # New object block system: all blocks (at least on detailviews) are now 'true' blocks. # Database migration system with South. # Django official version for Creme is now 1.3. # Deletion system is now better (thanks to Django 1.3) : * New delete handlers for FK. * Delete management for models with internals relations types. * Base delete can handle auto file deletion. # Removed Lock model & add Mutex model. # Configuration portal of an app can be generated with only SettingKey/SettingValue. # User settings blocks are now registrable in creme_config. # Fix the small but annoying bugs that prevented Creme to run correctly with PostgreSQL. # Documentation for people who want to install Creme on Windows. # Code clean-up (in .js files for example), lots of unit tests were added.