diff --git a/README.txt b/README.txt index 93de045..2913653 100644 --- a/README.txt +++ b/README.txt @@ -1,39 +1,39 @@ -Troggle is an application for caving expedition data management, originally created for use on Cambridge University Caving Club expeditions and licensed under the GNU Lesser General Public License. - -Troggle setup -========== - -Python, Django, and Database setup ------------------------------------ -Troggle requires Django 1.1 or greater, and any version of Python that works with it. As of writing this readme, there was no actual Django 1.1 release, so Troggle required the SVN version of Django. Check Django out to somewhere on your PYTHONPATH with the following command: - -svn co http://code.djangoproject.com/svn/django/trunk/ - -If you have an older installation of Django installed on your system, the easiest way to make sure troggle is using the newest version of Django is to simply checkout into your top troggle directory, into a folder called django. - -If you want to use MySQL or Postgresql, download and install them. However, you can also use Django with Sqlite3, which is included in Python and thus requires no extra installation. - - - -Troggle itself -------------- -Choose a directory where you will keep troggle, and svn check out Troggle into it using the following command: - -svn co http://troggle.googlecode.com/svn/ - -If you want to work on the source code and be able to commit, you will need to use https instead of http, and your google account will need to be added to the troggle project members list. Contact aaron dot curtis at cantab dot net to get this set up. - -Next, you need to fill in your local settings. Copy either localsettingsubuntu.py or localsettingsserver.py to a new file called localsettings.py. Follow the instructions contained in the file to fill out your settings. - -Setting up tables and importing legacy data ------------------------------------------- -Run "python databaseReset.py reset" from the troggle directory. - -Once troggle is running, you can also log in and then go to "Import / export" data under "admin" on the menu. - -Running a Troggle server ------------------------- -For high volume use, Troggle should be run using a web server like apache. However, a quick way to get started is to use the development server built into Django. - -To do this, run "python manage.py runserver" from the troggle directory. - +Troggle is an application for caving expedition data management, originally created for use on Cambridge University Caving Club expeditions and licensed under the GNU Lesser General Public License. + +Troggle setup +========== + +Python, Django, and Database setup +----------------------------------- +Troggle requires Django 1.1 or greater, and any version of Python that works with it. As of writing this readme, there was no actual Django 1.1 release, so Troggle required the SVN version of Django. Check Django out to somewhere on your PYTHONPATH with the following command: + +svn co http://code.djangoproject.com/svn/django/trunk/ + +If you have an older installation of Django installed on your system, the easiest way to make sure troggle is using the newest version of Django is to simply checkout into your top troggle directory, into a folder called django. + +If you want to use MySQL or Postgresql, download and install them. However, you can also use Django with Sqlite3, which is included in Python and thus requires no extra installation. + + + +Troggle itself +------------- +Choose a directory where you will keep troggle, and svn check out Troggle into it using the following command: + +svn co http://troggle.googlecode.com/svn/ + +If you want to work on the source code and be able to commit, you will need to use https instead of http, and your google account will need to be added to the troggle project members list. Contact aaron dot curtis at cantab dot net to get this set up. + +Next, you need to fill in your local settings. Copy either localsettingsubuntu.py or localsettingsserver.py to a new file called localsettings.py. Follow the instructions contained in the file to fill out your settings. + +Setting up tables and importing legacy data +------------------------------------------ +Run "python databaseReset.py reset" from the troggle directory. + +Once troggle is running, you can also log in and then go to "Import / export" data under "admin" on the menu. + +Running a Troggle server +------------------------ +For high volume use, Troggle should be run using a web server like apache. However, a quick way to get started is to use the development server built into Django. + +To do this, run "python manage.py runserver" from the troggle directory. + diff --git a/core/admin.py b/core/admin.py index be4045a..fc43f23 100644 --- a/core/admin.py +++ b/core/admin.py @@ -1,141 +1,141 @@ -from troggle.core.models import * -from django.contrib import admin -from django.forms import ModelForm -import django.forms as forms -from django.http import HttpResponse -from django.core import serializers -from core.views_other import downloadLogbook -#from troggle.reversion.admin import VersionAdmin #django-reversion version control - - -class TroggleModelAdmin(admin.ModelAdmin): - - def save_model(self, request, obj, form, change): - """overriding admin save to fill the new_since parsing_field""" - obj.new_since_parsing=True - obj.save() - - class Media: - js = ('js/jquery.js','js/QM_helper.js') - -class RoleInline(admin.TabularInline): - model = SurvexPersonRole - extra = 4 - -class SurvexBlockAdmin(TroggleModelAdmin): - inlines = (RoleInline,) - -class ScannedImageInline(admin.TabularInline): - model = ScannedImage - extra = 4 - -class OtherCaveInline(admin.TabularInline): - model = OtherCaveName - extra = 1 - -class SurveyAdmin(TroggleModelAdmin): - inlines = (ScannedImageInline,) - search_fields = ('expedition__year','wallet_number') - -class QMsFoundInline(admin.TabularInline): - model=QM - fk_name='found_by' - fields=('number','grade','location_description','comment')#need to add foreignkey to cave part - extra=1 - -class PhotoInline(admin.TabularInline): - model = DPhoto - exclude = ['is_mugshot' ] - extra = 1 - -class PersonTripInline(admin.TabularInline): - model = PersonTrip - raw_id_fields = ('personexpedition',) - extra = 1 - -#class LogbookEntryAdmin(VersionAdmin): -class LogbookEntryAdmin(TroggleModelAdmin): - prepopulated_fields = {'slug':("title",)} - raw_id_fields = ('cave',) - search_fields = ('title','expedition__year') - date_heirarchy = ('date') - inlines = (PersonTripInline, PhotoInline, QMsFoundInline) - class Media: - css = { - "all": ("css/troggleadmin.css",) - } - actions=('export_logbook_entries_as_html','export_logbook_entries_as_txt') - - def export_logbook_entries_as_html(modeladmin, request, queryset): - response=downloadLogbook(request=request, queryset=queryset, extension='html') - return response - - def export_logbook_entries_as_txt(modeladmin, request, queryset): - response=downloadLogbook(request=request, queryset=queryset, extension='txt') - return response - - - -class PersonExpeditionInline(admin.TabularInline): - model = PersonExpedition - extra = 1 - -class PersonAdmin(TroggleModelAdmin): - search_fields = ('first_name','last_name') - inlines = (PersonExpeditionInline,) - -class QMAdmin(TroggleModelAdmin): - search_fields = ('found_by__cave__kataster_number','number','found_by__date') - list_display = ('__unicode__','grade','found_by','ticked_off_by') - list_display_links = ('__unicode__',) - list_editable = ('found_by','ticked_off_by','grade') - list_per_page = 20 - raw_id_fields=('found_by','ticked_off_by') - -class PersonExpeditionAdmin(TroggleModelAdmin): - search_fields = ('person__first_name','expedition__year') - -class CaveAdmin(TroggleModelAdmin): - search_fields = ('official_name','kataster_number','unofficial_number') - inlines = (OtherCaveInline,) - extra = 4 - -class EntranceAdmin(TroggleModelAdmin): - search_fields = ('caveandentrance__cave__kataster_number',) - -admin.site.register(DPhoto) -admin.site.register(Cave, CaveAdmin) -admin.site.register(Area) -#admin.site.register(OtherCaveName) -admin.site.register(CaveAndEntrance) -admin.site.register(NewSubCave) -admin.site.register(CaveDescription) -admin.site.register(Entrance, EntranceAdmin) -admin.site.register(SurvexBlock, SurvexBlockAdmin) -admin.site.register(Expedition) -admin.site.register(Person,PersonAdmin) -admin.site.register(SurvexPersonRole) -admin.site.register(PersonExpedition,PersonExpeditionAdmin) -admin.site.register(LogbookEntry, LogbookEntryAdmin) -#admin.site.register(PersonTrip) -admin.site.register(QM, QMAdmin) -admin.site.register(Survey, SurveyAdmin) -admin.site.register(ScannedImage) - -admin.site.register(SurvexScansFolder) -admin.site.register(SurvexScanSingle) - -def export_as_json(modeladmin, request, queryset): - response = HttpResponse(mimetype="text/json") - response['Content-Disposition'] = 'attachment; filename=troggle_output.json' - serializers.serialize("json", queryset, stream=response) - return response - -def export_as_xml(modeladmin, request, queryset): - response = HttpResponse(mimetype="text/xml") - response['Content-Disposition'] = 'attachment; filename=troggle_output.xml' - serializers.serialize("xml", queryset, stream=response) - return response - -#admin.site.add_action(export_as_xml) -#admin.site.add_action(export_as_json) +from troggle.core.models import * +from django.contrib import admin +from django.forms import ModelForm +import django.forms as forms +from django.http import HttpResponse +from django.core import serializers +from core.views_other import downloadLogbook +#from troggle.reversion.admin import VersionAdmin #django-reversion version control + + +class TroggleModelAdmin(admin.ModelAdmin): + + def save_model(self, request, obj, form, change): + """overriding admin save to fill the new_since parsing_field""" + obj.new_since_parsing=True + obj.save() + + class Media: + js = ('js/jquery.js','js/QM_helper.js') + +class RoleInline(admin.TabularInline): + model = SurvexPersonRole + extra = 4 + +class SurvexBlockAdmin(TroggleModelAdmin): + inlines = (RoleInline,) + +class ScannedImageInline(admin.TabularInline): + model = ScannedImage + extra = 4 + +class OtherCaveInline(admin.TabularInline): + model = OtherCaveName + extra = 1 + +class SurveyAdmin(TroggleModelAdmin): + inlines = (ScannedImageInline,) + search_fields = ('expedition__year','wallet_number') + +class QMsFoundInline(admin.TabularInline): + model=QM + fk_name='found_by' + fields=('number','grade','location_description','comment')#need to add foreignkey to cave part + extra=1 + +class PhotoInline(admin.TabularInline): + model = DPhoto + exclude = ['is_mugshot' ] + extra = 1 + +class PersonTripInline(admin.TabularInline): + model = PersonTrip + raw_id_fields = ('personexpedition',) + extra = 1 + +#class LogbookEntryAdmin(VersionAdmin): +class LogbookEntryAdmin(TroggleModelAdmin): + prepopulated_fields = {'slug':("title",)} + raw_id_fields = ('cave',) + search_fields = ('title','expedition__year') + date_heirarchy = ('date') + inlines = (PersonTripInline, PhotoInline, QMsFoundInline) + class Media: + css = { + "all": ("css/troggleadmin.css",) + } + actions=('export_logbook_entries_as_html','export_logbook_entries_as_txt') + + def export_logbook_entries_as_html(modeladmin, request, queryset): + response=downloadLogbook(request=request, queryset=queryset, extension='html') + return response + + def export_logbook_entries_as_txt(modeladmin, request, queryset): + response=downloadLogbook(request=request, queryset=queryset, extension='txt') + return response + + + +class PersonExpeditionInline(admin.TabularInline): + model = PersonExpedition + extra = 1 + +class PersonAdmin(TroggleModelAdmin): + search_fields = ('first_name','last_name') + inlines = (PersonExpeditionInline,) + +class QMAdmin(TroggleModelAdmin): + search_fields = ('found_by__cave__kataster_number','number','found_by__date') + list_display = ('__unicode__','grade','found_by','ticked_off_by') + list_display_links = ('__unicode__',) + list_editable = ('found_by','ticked_off_by','grade') + list_per_page = 20 + raw_id_fields=('found_by','ticked_off_by') + +class PersonExpeditionAdmin(TroggleModelAdmin): + search_fields = ('person__first_name','expedition__year') + +class CaveAdmin(TroggleModelAdmin): + search_fields = ('official_name','kataster_number','unofficial_number') + inlines = (OtherCaveInline,) + extra = 4 + +class EntranceAdmin(TroggleModelAdmin): + search_fields = ('caveandentrance__cave__kataster_number',) + +admin.site.register(DPhoto) +admin.site.register(Cave, CaveAdmin) +admin.site.register(Area) +#admin.site.register(OtherCaveName) +admin.site.register(CaveAndEntrance) +admin.site.register(NewSubCave) +admin.site.register(CaveDescription) +admin.site.register(Entrance, EntranceAdmin) +admin.site.register(SurvexBlock, SurvexBlockAdmin) +admin.site.register(Expedition) +admin.site.register(Person,PersonAdmin) +admin.site.register(SurvexPersonRole) +admin.site.register(PersonExpedition,PersonExpeditionAdmin) +admin.site.register(LogbookEntry, LogbookEntryAdmin) +#admin.site.register(PersonTrip) +admin.site.register(QM, QMAdmin) +admin.site.register(Survey, SurveyAdmin) +admin.site.register(ScannedImage) + +admin.site.register(SurvexScansFolder) +admin.site.register(SurvexScanSingle) + +def export_as_json(modeladmin, request, queryset): + response = HttpResponse(mimetype="text/json") + response['Content-Disposition'] = 'attachment; filename=troggle_output.json' + serializers.serialize("json", queryset, stream=response) + return response + +def export_as_xml(modeladmin, request, queryset): + response = HttpResponse(mimetype="text/xml") + response['Content-Disposition'] = 'attachment; filename=troggle_output.xml' + serializers.serialize("xml", queryset, stream=response) + return response + +#admin.site.add_action(export_as_xml) +#admin.site.add_action(export_as_json) diff --git a/core/forms.py b/core/forms.py index ec639b0..7063f23 100644 --- a/core/forms.py +++ b/core/forms.py @@ -1,121 +1,121 @@ -from django.forms import ModelForm -from models import Cave, Person, PersonExpedition, LogbookEntry, QM, Expedition -import django.forms as forms -from django.forms.formsets import formset_factory -from django.contrib.admin.widgets import AdminDateWidget -import string -from datetime import date -from tinymce.widgets import TinyMCE - -#class CaveForm(ModelForm): -# class Meta: -# model = Cave - -#class PersonForm(ModelForm): -# class Meta: -# model = Person - -#class LogbookEntryForm(ModelForm): -# class Meta: -# model = LogbookEntry# - -# def wikiLinkHints(LogbookEntry=None): -# """ -# This function returns html-formatted paragraphs for each of the -# wikilink types that are related to this logbookentry. Each paragraph -# contains a list of all of the related wikilinks. -# -# Perhaps an admin javascript solution would be better. -# """ -# res = ["Please use the following wikilinks, which are related to this logbook entry:"] -# -# res.append(r'
QMs found:') -# for QM in LogbookEntry.instance.QMs_found.all(): -# res.append(QM.wiki_link()) - -# res.append(r'
QMs ticked off:') -# for QM in LogbookEntry.instance.QMs_ticked_off.all(): -# res.append(QM.wiki_link()) - -# res.append(r'
People') -# for persontrip in LogbookEntry.instance.persontrip_set.all(): -# res.append(persontrip.wiki_link()) -# res.append(r'
') - -# return string.join(res, r'QMs found:') +# for QM in LogbookEntry.instance.QMs_found.all(): +# res.append(QM.wiki_link()) + +# res.append(r'
QMs ticked off:') +# for QM in LogbookEntry.instance.QMs_ticked_off.all(): +# res.append(QM.wiki_link()) + +# res.append(r'
People') +# for persontrip in LogbookEntry.instance.persontrip_set.all(): +# res.append(persontrip.wiki_link()) +# res.append(r'
') + +# return string.join(res, r'" - outValue += wiki_to_html_short(paragraph, autoescape) - outValue += "
\n" - return mark_safe(outValue) - -@register.filter() -@stringfilter -def wiki_to_html_short(value, autoescape=None): - """ - This is the tag which turns wiki syntax into html. It is intended for short pieces of wiki. - Hence it is not split the wiki into paragraphs using where it finds double line feeds. - """ - if autoescape: - value = conditional_escape(value) - #deescape doubly escaped characters - value = re.sub("&(.*?);", r"&\1;", value, re.DOTALL) - #italics and bold - value = re.sub("''''([^']+)''''", r"\1", value, re.DOTALL) - value = re.sub("'b''([^']+)'''", r"\1", value, re.DOTALL) - value = re.sub("''([^']+)''", r"\1", value, re.DOTALL) - - #make headers - def headerrepl(matchobj): - number=len(matchobj.groups()[0]) - num=str(number) - if number>1: - return '-
+
{{message}}
- -Other years: -{% for otherpersonexpedition in personexpedition.person.personexpedition_set.all %} - {% ifequal otherpersonexpedition personexpedition %} - | {{otherpersonexpedition.expedition.year}} - {% else %} - | {{ otherpersonexpedition.expedition.year }} - {% endifequal %} -{% endfor %} -
- -Date | Trips | Surveys | ||||||
---|---|---|---|---|---|---|---|---|
{{persondate.0}} | - - {% if persondate.1 %} -{{persondate.1.logbook_entry.title|safe}} | -{{persondate.1.place|safe}} | - {% else %} -- {% endif %} - - {% if persondate.2 %} - | {{persondate.2}} | -- {% for survexpersonrole in persondate.2.survexpersonrole_set.all %} - {{survexpersonrole.nrole}} - {% endfor %} - | - {% else %} -- {% endif %} - - |
{{message}}
+ +Other years: +{% for otherpersonexpedition in personexpedition.person.personexpedition_set.all %} + {% ifequal otherpersonexpedition personexpedition %} + | {{otherpersonexpedition.expedition.year}} + {% else %} + | {{ otherpersonexpedition.expedition.year }} + {% endifequal %} +{% endfor %} +
+ +Date | Trips | Surveys | ||||||
---|---|---|---|---|---|---|---|---|
{{persondate.0}} | + + {% if persondate.1 %} +{{persondate.1.logbook_entry.title|safe}} | +{{persondate.1.place|safe}} | + {% else %} ++ {% endif %} + + {% if persondate.2 %} + | {{persondate.2}} | ++ {% for survexpersonrole in persondate.2.survexpersonrole_set.all %} + {{survexpersonrole.nrole}} + {% endfor %} + | + {% else %} ++ {% endif %} + + |
Person | First | Last | Notability |
---|---|---|---|
{{person|wiki_to_html_short}} | -{{ person.first.expedition.year }} | -{{ person.last.expedition.year }} | -{{person.notability}} | -
-
-
|
-{% endfor %}
-
Person | First | Last | Notability |
---|---|---|---|
{{person|wiki_to_html_short}} | +{{ person.first.expedition.year }} | +{{ person.last.expedition.year }} | +{{person.notability}} | +
+
+
|
+{% endfor %}
+
Please correct the errors below
-{% endif %} +{% extends "base.html" %} + +{% block content %} + + + +{% if form.errors %} +Please correct the errors below
+{% endif %} {% endblock %} \ No newline at end of file diff --git a/templates/profiles/edit_profile.html b/templates/profiles/edit_profile.html index 7e32597..a147160 100644 --- a/templates/profiles/edit_profile.html +++ b/templates/profiles/edit_profile.html @@ -1,13 +1,13 @@ -{% extends "base.html" %} - -{% block content %} - - - -{% if form.errors %} -Please correct the errors below
-{% endif %} +{% extends "base.html" %} + +{% block content %} + + + +{% if form.errors %} +Please correct the errors below
+{% endif %} {% endblock %} \ No newline at end of file diff --git a/templates/profiles/profile_detail.html b/templates/profiles/profile_detail.html index baf3fae..cf2fb76 100644 --- a/templates/profiles/profile_detail.html +++ b/templates/profiles/profile_detail.html @@ -1,14 +1,14 @@ -{% extends "base.html" %} - -{% block contentheader %} -Please correct the errors below
-{% endif %} +{% extends "base.html" %} + +{% block contentheader %} +Please correct the errors below
+{% endif %} {% endblock %} \ No newline at end of file diff --git a/templates/profiles/select_profile.html b/templates/profiles/select_profile.html index 810efd2..e18191b 100644 --- a/templates/profiles/select_profile.html +++ b/templates/profiles/select_profile.html @@ -1,40 +1,40 @@ -{% extends "base.html" %} - -{% block content %} - -Please correct the errors below
-{% endif %} +{% extends "base.html" %} + +{% block content %} + +Please correct the errors below
+{% endif %} {% endblock %} \ No newline at end of file diff --git a/templates/qm.html b/templates/qm.html index 6e2a2fb..f960197 100644 --- a/templates/qm.html +++ b/templates/qm.html @@ -1,49 +1,49 @@ -{% extends "base.html" %} -{% load wiki_markup %} -{% load link %} - -{% block title %} QM: {{qm|wiki_to_html_short}} {% endblock %} - -{% block editLink %}| Edit QM {{qm|wiki_to_html_short}}{% endblock %} - - - -{% block contentheader %} -Previous | -{{qm|wiki_to_html_short}} | -Next | -
---|
Previous | +{{qm|wiki_to_html_short}} | +Next | +
---|
-Hello, {{ account }}! Your account is now activated. Now you can log in with the password you chose. Use the links in the upper right to control this in the future. -
- --If you have been on the expedition in the past, you already have a profile in the system; click here to find it and link it to your account. Otherwise, please create yourself a new profile. -
-{% else %} - -The activation key you entered has already been used or was invalid. -{% endif %} +{% extends "base.html" %} + +{% block title %} +New troggle account registered +{% endblock %} + +{% block header %} ++Hello, {{ account }}! Your account is now activated. Now you can log in with the password you chose. Use the links in the upper right to control this in the future. +
+ ++If you have been on the expedition in the past, you already have a profile in the system; click here to find it and link it to your account. Otherwise, please create yourself a new profile. +
+{% else %} + +The activation key you entered has already been used or was invalid. +{% endif %} {% endblock %} diff --git a/templates/registration/activation_email.html b/templates/registration/activation_email.html index 3d56009..abb0ad1 100644 --- a/templates/registration/activation_email.html +++ b/templates/registration/activation_email.html @@ -1,10 +1,10 @@ -Hello {{ form.user }},
- -Glad you're joining the CUCC EXPO team! Please go to
- -{{ site }}{% url registration_activate activation_key %}
- -to activate your account. Do this within {{ expiration_days }} days, or else you'll have to sign up again.
- -Yours,
-The magical troggle
Hello {{ form.user }},
+ +Glad you're joining the CUCC EXPO team! Please go to
+ +{{ site }}{% url registration_activate activation_key %}
+ +to activate your account. Do this within {{ expiration_days }} days, or else you'll have to sign up again.
+ +Yours,
+The magical troggle
Your username and password didn't match. Please try again.
-{% endif %} - - - -{% endblock %} +{% extends "base.html" %} +{% load csrffaker %} + +{% block content %} + +{% if form.errors %} +Your username and password didn't match. Please try again.
+{% endif %} + + + +{% endblock %} diff --git a/templates/registration/logout.html b/templates/registration/logout.html index 9e40c20..ef2a3b2 100644 --- a/templates/registration/logout.html +++ b/templates/registration/logout.html @@ -1,4 +1,4 @@ -{% extends "base.html" %} -{% block content %} - You have been logged out. +{% extends "base.html" %} +{% block content %} + You have been logged out. {% endblock %} \ No newline at end of file diff --git a/templates/registration/registration_activate.html b/templates/registration/registration_activate.html index cbd540e..6566bf4 100644 --- a/templates/registration/registration_activate.html +++ b/templates/registration/registration_activate.html @@ -1,6 +1,6 @@ -{% extends “base.html” %} -{% block body %} -Hello {{ account }}! - -Check your email to confirm the activation. There are {{ expiration_days }} days left to do it. +{% extends “base.html” %} +{% block body %} +Hello {{ account }}! + +Check your email to confirm the activation. There are {{ expiration_days }} days left to do it. {% endblock %} \ No newline at end of file diff --git a/templates/registration/registration_complete.html b/templates/registration/registration_complete.html index 78684fe..4dac94b 100644 --- a/templates/registration/registration_complete.html +++ b/templates/registration/registration_complete.html @@ -1,13 +1,13 @@ -{% extends "base.html" %} - -{% block title %} -{{ block.super }}: registration complete -{% endblock %} - -{% block contentheader %} -Thank you for signing up. An email with the activation code has been sent to your inbox.
+{% extends "base.html" %} + +{% block title %} +{{ block.super }}: registration complete +{% endblock %} + +{% block contentheader %} +Thank you for signing up. An email with the activation code has been sent to your inbox.
{% endblock %} \ No newline at end of file diff --git a/templates/statistics.html b/templates/statistics.html index 1fddd67..daca752 100644 --- a/templates/statistics.html +++ b/templates/statistics.html @@ -1,8 +1,8 @@ -{% extends "base.html" %} -{% load wiki_markup %} - -{% block title %}Database statistics{% endblock %} - -{% block content %} -Over the course of {{ expoCount }} expeditions, {{ personCount }} people have contributed {{ caveCount }} caves and {{ logbookEntryCount }} logbook entries. +{% extends "base.html" %} +{% load wiki_markup %} + +{% block title %}Database statistics{% endblock %} + +{% block content %} +Over the course of {{ expoCount }} expeditions, {{ personCount }} people have contributed {{ caveCount }} caves and {{ logbookEntryCount }} logbook entries. {% endblock %} \ No newline at end of file diff --git a/templates/subcave.html b/templates/subcave.html index fbb8d1d..41fb2d0 100644 --- a/templates/subcave.html +++ b/templates/subcave.html @@ -1,59 +1,59 @@ -{% extends "cavebase.html" %} -{% load wiki_markup %} -{% load mptt_tags %} -{% block title %} Subcave {{subcave}} {% endblock title %} -{% block editLink %}Edit subcave {{subcave|wiki_to_html_short}}{% endblock %} - -{% block contentheader %} - {{subcave.title}} -{% endblock contentheader %} - - - -{% block content %} -{% block related %} - -- {{subcave.description}} -
- +{% extends "cavebase.html" %} +{% load wiki_markup %} +{% load mptt_tags %} +{% block title %} Subcave {{subcave}} {% endblock title %} +{% block editLink %}Edit subcave {{subcave|wiki_to_html_short}}{% endblock %} + +{% block contentheader %} + {{subcave.title}} +{% endblock contentheader %} + + + +{% block content %} +{% block related %} + ++ {{subcave.description}} +
+ {% endblock content %} \ No newline at end of file diff --git a/templates/survexblock.html b/templates/survexblock.html index 31958c0..c4c1066 100644 --- a/templates/survexblock.html +++ b/templates/survexblock.html @@ -1,49 +1,49 @@ -{% extends "base.html" %} -{% load wiki_markup %} -{% load survex_markup %} - - -{% block title %}Survex Block{% endblock %} - -{% block content %} -Link to {{survexblock.survexfile.path}}
- -Needs duplicates removed from right hand column
-Needs links to survex file presentation
-Needs to start dealing with misspellings of names (prob by editing the originals)
- -Survey block above:
-{{survexblock.parent.survexpath}}
-{% endif %} - -{% if survexblock.survexblock_set.all %} -Survey blocks below:
- {% for survexblockdown in survexblock.survexblock_set.all %} -{{survexblockdown.survexpath}}
- {% endfor %} -{% endif %} - -Date: {{survexblock.date}}
- -{{personrole.person}} | -{{personrole.roles}} | -
Link to {{survexblock.survexfile.path}}
+ +Needs duplicates removed from right hand column
+Needs links to survex file presentation
+Needs to start dealing with misspellings of names (prob by editing the originals)
+ +Survey block above:
+{{survexblock.parent.survexpath}}
+{% endif %} + +{% if survexblock.survexblock_set.all %} +Survey blocks below:
+ {% for survexblockdown in survexblock.survexblock_set.all %} +{{survexblockdown.survexpath}}
+ {% endfor %} +{% endif %} + +Date: {{survexblock.date}}
+ +{{personrole.person}} | +{{personrole.roles}} | +
{{survexscansingle.name}} | -- {% for survexblock in survexscansingle.survexblock_set.all %} - {{survexblock}} - {% endfor %} - | -
{{survexblock}} | -
{{survexscansingle.name}} | ++ {% for survexblock in survexscansingle.survexblock_set.all %} + {{survexblock}} + {% endfor %} + | +
{{survexblock}} | +
Scans folder | Files | Survex blocks |
---|---|---|
{{survexscansfolder.walletname}} | -{{survexscansfolder.survexscansingle_set.all|length}} | -- {% for survexblock in survexscansfolder.survexblock_set.all %} - {{survexblock}} - {% endfor %} - | -
Scans folder | Files | Survex blocks |
---|---|---|
{{survexscansfolder.walletname}} | +{{survexscansfolder.survexscansingle_set.all|length}} | ++ {% for survexblock in survexscansfolder.survexblock_set.all %} + {{survexblock}} + {% endfor %} + | +
- {% for survey in current_expedition.survey_set.all %} - | {{ survey.wallet_number }} | - {% endfor %}
---|---|
Notes | - {% for survey in current_expedition.survey_set.all %} -{% if survey.notes %} - ✓ - {% endif %} | - {% endfor %}
Survex file | - {% for survey in current_expedition.survey_set.all %} -{% if survey.survex_file %} - ✓ - {% endif %} | - {% endfor %}
Plans | - {% for survey in current_expedition.survey_set.all %} -{% if survey.plans %} - ✓ - {% endif %} | - {% endfor %}
Elevations | - {% for survey in current_expedition.survey_set.all %} -{% if survey.elevations %} - ✓ - {% endif %} | - {% endfor %}
-
File at: {{ noteItem.file.name }}
- Scanned by: {{ noteItem.scanned_by }}
- On: {{ noteItem.scanned_on }}
-
-
File at: {{ sketchItem.file.name }}
- Scanned by: {{ sketchItem.scanned_by }}
- On: {{ sketchItem.scanned_on }}
-
+ {% for survey in current_expedition.survey_set.all %} + | {{ survey.wallet_number }} | + {% endfor %}
---|---|
Notes | + {% for survey in current_expedition.survey_set.all %} +{% if survey.notes %} + ✓ + {% endif %} | + {% endfor %}
Survex file | + {% for survey in current_expedition.survey_set.all %} +{% if survey.survex_file %} + ✓ + {% endif %} | + {% endfor %}
Plans | + {% for survey in current_expedition.survey_set.all %} +{% if survey.plans %} + ✓ + {% endif %} | + {% endfor %}
Elevations | + {% for survey in current_expedition.survey_set.all %} +{% if survey.elevations %} + ✓ + {% endif %} | + {% endfor %}
+
File at: {{ noteItem.file.name }}
+ Scanned by: {{ noteItem.scanned_by }}
+ On: {{ noteItem.scanned_on }}
+
+
File at: {{ sketchItem.file.name }}
+ Scanned by: {{ sketchItem.scanned_by }}
+ On: {{ sketchItem.scanned_on }}
+
-{% for survexdirectory in cave.survexdirectory_set.all %} - {{survexdirectory.path}} -{% endfor %} -
- -{% for survexdirectory in cave.survexdirectory_set.all %} -Survex file | Block | Date | Explorers | length | Titles | Scans |
---|---|---|---|---|---|---|
- {% else %} - | - {% endif %} - - {% ifequal survexfile survexdirectory.primarysurvexfile %} - {{survexfile.path}} - {% else %} - {{survexfile.path}} - {% endifequal %} - | -|||||
{{survexblock.name}} | -- {% if survexblock.expedition %} - {{survexblock.date}} - {% else %} - {{survexblock.date}} - {% endif %} - | - -- {% for personrole in survexblock.personrole_set.all %} - {% if personrole.personexpedition %} - {{personrole.personname}} - {% else %} - {{personrole.personname}} - {% endif %} - {% endfor %} - | - -{{survexblock.totalleglength}} | - -- {% for survextitle in survexblock.survextitle_set.all %} - {{survextitle.title}} - {% endfor %} - | - -- {% if survexblock.survexscansfolder %} - {{survexblock.survexscansfolder.walletname}} - {% endif %} - | -
+{% for survexdirectory in cave.survexdirectory_set.all %} + {{survexdirectory.path}} +{% endfor %} +
+ +{% for survexdirectory in cave.survexdirectory_set.all %} +Survex file | Block | Date | Explorers | length | Titles | Scans |
---|---|---|---|---|---|---|
+ {% else %} + | + {% endif %} + + {% ifequal survexfile survexdirectory.primarysurvexfile %} + {{survexfile.path}} + {% else %} + {{survexfile.path}} + {% endifequal %} + | +|||||
{{survexblock.name}} | ++ {% if survexblock.expedition %} + {{survexblock.date}} + {% else %} + {{survexblock.date}} + {% endif %} + | + ++ {% for personrole in survexblock.personrole_set.all %} + {% if personrole.personexpedition %} + {{personrole.personname}} + {% else %} + {{personrole.personname}} + {% endif %} + {% endfor %} + | + +{{survexblock.totalleglength}} | + ++ {% for survextitle in survexblock.survextitle_set.all %} + {{survextitle.title}} + {% endfor %} + | + ++ {% if survexblock.survexscansfolder %} + {{survexblock.survexscansfolder.walletname}} + {% endif %} + | +
Included files: -{% for svxinclude in svxincludes %} - {{svxinclude}} -{% endfor %} -
-{% endif %} - - - --{% for diffline in difflist %}{{diffline}} -{% endfor %} -- -{% if logmessage %} -{% if has_3d %} - -{% else %} -
No 3d file
-{% endif %} --LOGMESSAGES -{{logmessage}} --{% endif %} -
Included files: +{% for svxinclude in svxincludes %} + {{svxinclude}} +{% endfor %} +
+{% endif %} + + + ++{% for diffline in difflist %}{{diffline}} +{% endfor %} ++ +{% if logmessage %} +{% if has_3d %} + +{% else %} +
No 3d file
+{% endif %} ++LOGMESSAGES +{{logmessage}} ++{% endif %} +
caves with subdirectories | caves with multiple files | caves with single files
- -{{cavefiles.0.1}} | -- {% for cavepath, cavename in cavefiles.1 %} - {{cavename}} - {% endfor %} - | -
{{primarycavefile.1}} | -- {% for cavepath, cavename in subcavefiles %} - {{cavename}} - {% endfor %} - | -
Dates and explorers | Survex files |
---|---|
- {{primarycavefile.1}} - | -- {{primarycavefile.1}} - - {% for cavepath, cavename in subcavefiles %} - {{cavename}} - {% endfor %} - | -
-{% for cavepath, cavename in onefilecaves %} - {{cavename}} -{% endfor %} -
- -{% endblock %} +{% extends "base.html" %} +{% load wiki_markup %} +{% load link %} + +{% block title %}List of survex files{% endblock %} + +{% block content %} +caves with subdirectories | caves with multiple files | caves with single files
+ +{{cavefiles.0.1}} | ++ {% for cavepath, cavename in cavefiles.1 %} + {{cavename}} + {% endfor %} + | +
{{primarycavefile.1}} | ++ {% for cavepath, cavename in subcavefiles %} + {{cavename}} + {% endfor %} + | +
Dates and explorers | Survex files |
---|---|
+ {{primarycavefile.1}} + | ++ {{primarycavefile.1}} - + {% for cavepath, cavename in subcavefiles %} + {{cavename}} + {% endfor %} + | +
+{% for cavepath, cavename in onefilecaves %} + {{cavename}} +{% endfor %} +
+ +{% endblock %} diff --git a/templates/svxfiledifflistonly.html b/templates/svxfiledifflistonly.html index f51744e..835125b 100644 --- a/templates/svxfiledifflistonly.html +++ b/templates/svxfiledifflistonly.html @@ -1,18 +1,18 @@ -- using difflistonly.html -{% for diffline in difflist %}{{diffline}} -{% endfor %} -- -{% if logmessage %} -{% if has_3d %} - -{% else %} -
No 3d file
-{% endif %} --LOGMESSAGES -{{logmessage}} --{% endif %} - +
+ using difflistonly.html +{% for diffline in difflist %}{{diffline}} +{% endfor %} ++ +{% if logmessage %} +{% if has_3d %} + +{% else %} +
No 3d file
+{% endif %} ++LOGMESSAGES +{{logmessage}} ++{% endif %} + diff --git a/templates/tasks.html b/templates/tasks.html index a429bd5..36d35f4 100644 --- a/templates/tasks.html +++ b/templates/tasks.html @@ -1,39 +1,39 @@ -{% extends "base.html" %} -{% load wiki_markup %} -{% load link %} - -{% block title %}Cambridge Expeditions to Austria{% endblock %} - -{% block content %} -
Please see the issues tracker on google code. You can contribute new feature requests and bug reports.
- -Julian's work: -
parse 1992-1976 logbooks; (esp top 161)
-detect T/U on log entries;
-name matching and spelling in survex files;
-Improve logbook wikihtml text
- -Other work:
-surf through the tunnel sketches and images
-bugs with all.svx block (double dot) -
render bitmap view of every survex block as a thumbnail
-upload tunnel images and tunnel sketches
-where are the subcaves;
-cave section entrance match for logbook entries
-simplify the survex parsing code (if necessary);
-wiki survex stop linegap between comment lins
-links between logbooks and survex blocks to cave things;
-mini-tree of survexblocks;
-connect sketches to caves to survey blocks and render thumbnailwise;
-all images to start appearing in pages; and so on
- -Please see the issues tracker on google code. You can contribute new feature requests and bug reports.
+ +Julian's work: +
parse 1992-1976 logbooks; (esp top 161)
+detect T/U on log entries;
+name matching and spelling in survex files;
+Improve logbook wikihtml text
+ +Other work:
+surf through the tunnel sketches and images
+bugs with all.svx block (double dot) +
render bitmap view of every survex block as a thumbnail
+upload tunnel images and tunnel sketches
+where are the subcaves;
+cave section entrance match for logbook entries
+simplify the survex parsing code (if necessary);
+wiki survex stop linegap between comment lins
+links between logbooks and survex blocks to cave things;
+mini-tree of survexblocks;
+connect sketches to caves to survey blocks and render thumbnailwise;
+all images to start appearing in pages; and so on
+ +File | Font | SurvexBlocks | Size | Paths | Scans folder | Scan files | Frames |
---|---|---|---|---|---|---|---|
{{tunnelfile.tunnelpath}} | -{{tunnelfile.bfontcolours}} | -- | {{tunnelfile.filesize}} | -{{tunnelfile.npaths}} | - -- {% for survexscansfolder in tunnelfile.survexscansfolders.all %} - {{survexscansfolder.walletname}} - {% endfor %} - | - -- {% for survexscansingle in tunnelfile.survexscans.all %} - {{survexscansingle.name}} - {% endfor %} - | - -- {% for rtunnelfile in tunnelfile.tunnelcontains.all %} - {{rtunnelfile.tunnelpath}} - {% endfor %} - | - - -
File | Font | SurvexBlocks | Size | Paths | Scans folder | Scan files | Frames |
---|---|---|---|---|---|---|---|
{{tunnelfile.tunnelpath}} | +{{tunnelfile.bfontcolours}} | ++ | {{tunnelfile.filesize}} | +{{tunnelfile.npaths}} | + ++ {% for survexscansfolder in tunnelfile.survexscansfolders.all %} + {{survexscansfolder.walletname}} + {% endfor %} + | + ++ {% for survexscansingle in tunnelfile.survexscans.all %} + {{survexscansingle.name}} + {% endfor %} + | + ++ {% for rtunnelfile in tunnelfile.tunnelcontains.all %} + {{rtunnelfile.tunnelpath}} + {% endfor %} + | + + +