equal
deleted
inserted
replaced
33 import soc.views.helper.responses |
33 import soc.views.helper.responses |
34 import soc.views.helper.params |
34 import soc.views.helper.params |
35 |
35 |
36 from soc.logic import dicts |
36 from soc.logic import dicts |
37 from soc.logic import models |
37 from soc.logic import models |
38 from soc.models import linkable |
|
39 from soc.views import helper |
38 from soc.views import helper |
40 from soc.views import out_of_band |
39 from soc.views import out_of_band |
41 from soc.views.helper import access |
40 from soc.views.helper import access |
42 from soc.views.helper import forms |
41 from soc.views.helper import forms |
|
42 from soc.views import sitemap |
43 |
43 |
44 |
44 |
45 class View(object): |
45 class View(object): |
46 """Views for entity classes. |
46 """Views for entity classes. |
47 |
47 |
541 else: |
541 else: |
542 template = params['create_template'] |
542 template = params['create_template'] |
543 |
543 |
544 return helper.responses.respond(request, template, context) |
544 return helper.responses.respond(request, template, context) |
545 |
545 |
546 def getKeyFieldsPattern(self, params): |
|
547 """Returns the Django pattern for this View's entity |
|
548 |
|
549 Params usage: |
|
550 key_fields_prefix: The key_fields_prefix value is used as the |
|
551 first part of the returned pattern. |
|
552 """ |
|
553 |
|
554 names = self._logic.getKeyFieldNames() |
|
555 patterns = params['key_fields_prefix'] |
|
556 |
|
557 for name in names: |
|
558 pattern = r'(?P<%s>%s)' % (name, linkable.LINK_ID_PATTERN_CORE) |
|
559 patterns.append(pattern) |
|
560 |
|
561 result = '/'.join(patterns) |
|
562 return result |
|
563 |
|
564 def _getSidebarItems(self, params): |
546 def _getSidebarItems(self, params): |
565 """Retrieves a list of sidebar entries for this view |
547 """Retrieves a list of sidebar entries for this view |
566 |
548 |
567 Params usage: |
549 Params usage: |
568 The params dictionary is provided to the menu_text's format. |
550 The params dictionary is provided to the menu_text's format. |
678 Args: |
660 Args: |
679 params: a dict with params for this View |
661 params: a dict with params for this View |
680 """ |
662 """ |
681 |
663 |
682 params = dicts.merge(params, self._params) |
664 params = dicts.merge(params, self._params) |
683 |
665 return sitemap.sitemap.getDjangoURLPatterns(params) |
684 # Return the found result |
|
685 if params['django_patterns']: |
|
686 return params['django_patterns'] |
|
687 |
|
688 # Construct defaults manualy |
|
689 default_patterns = params['django_patterns_defaults'] |
|
690 key_fields_pattern = self.getKeyFieldsPattern(params) |
|
691 |
|
692 patterns = [] |
|
693 |
|
694 for url, module, name in default_patterns: |
|
695 name = name % params |
|
696 module = module % params['module_name'] |
|
697 |
|
698 url = url % { |
|
699 'url_name': params['url_name'], |
|
700 'lnp': linkable.LINK_ID_ARG_PATTERN, |
|
701 'ulnp': linkable.LINK_ID_PATTERN_CORE, |
|
702 'key_fields': key_fields_pattern, |
|
703 } |
|
704 |
|
705 kwargs = {'page_name': name} |
|
706 |
|
707 item = (url, module, kwargs, name) |
|
708 patterns.append(item) |
|
709 |
|
710 return patterns |
|