Changeset 451866d


Ignore:
Timestamp:
10/18/11 21:18:51 (2 years ago)
Author:
yomguy <yomguy@…>
Branches:
master, crem, crem2, dev, dev2, diadems, feature/breadcrumbs, feature/ts-0.5, feature/ts-0.5.4, feature/writecache, forma, generic, instru_search, lam, lam2, mapsv3, merge, nlivemulti, production, release/1.4.4, sabiod, security, server, social, storage, telecaster, test
Children:
994ebb4
Parents:
fd2dd02 (diff), 86d17e9 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
git-author:
yomguy <yomguy@…> (10/18/11 21:18:51)
git-committer:
yomguy <yomguy@…> (10/18/11 21:18:51)
Message:

yomguy 2011-10-18 fix blank item.code (now recorded as None, not )
yomguy 2011-10-18 fix wrong login url, add internal id to dublincore, fix OAI identifiers
yomguy 2011-10-17 revert ipauth to django.contrib.auth
yomguy 2011-10-17 OAI fix : better id management (database id by default), split multiple coverage, repositoryName becomes settings.TELEMETA_ORGANIZATION

Files:
6 added
6 edited

Legend:

Unmodified
Added
Removed
  • telemeta/interop/oai.py

    rfac4a3b r289a4a3  
    409409            container.appendChild(self.make_record(id, dc, ctime)) 
    410410 
     411    def format_id_header(self, id): 
     412        organization = self.identity[0][1]  
     413        if 'http' in id: 
     414            id = id.split('/')[-1] 
     415        return ':'.join(['oai', organization.lower(), 'items', id]) 
     416     
    411417    def list_records(self, from_time, until_time, token = None, ids_only = False): 
    412418        """Append ListIdentifiers or ListRecords result""" 
     
    457463                dc, ctime = item 
    458464                id, dc = self.parse_dc(dc) 
     465                id = self.format_id_header(id) 
    459466                if id == None: 
    460467                    raise Exception("DataSource.list_records() didn't provide an 'identifier' dublin core element") 
  • telemeta/models/dublincore.py

    ra0b0f45 r289a4a3  
    164164    resource = Resource( 
    165165        Element('identifier',       media_identifier(collection), related=collection), 
     166        Element('identifier',       collection.public_id, related=collection), 
    166167        Element('type',             'Collection'), 
    167168        Element('title',            collection.title), 
     
    215216    resource = Resource( 
    216217        Element('identifier',       media_identifier(item), related=item), 
     218        Element('identifier',       item.public_id, related=item), 
    217219        Element('type',             'Sound'), 
    218220        Element('title',            title), 
     
    227229        date, 
    228230        Date(item.collection.year_published, refinement='issued'), 
    229         Element.multiple('coverage', item.location and item.location.fullnames(), 'spatial'), 
     231        Element.multiple('coverage', item.location and item.location.listnames(), 'spatial'), 
    230232        Element('coverage',         item.location_comment, 'spatial'), 
    231233        Element('rights',           item.collection.legal_rights, 'license'), 
     
    249251def lookup_resource(media_id): 
    250252    try: 
    251         type, code = media_id.split(':', 1) 
     253        id = media_id.split(':') 
     254        type = id[-2] 
     255        code = id[-1] 
    252256    except ValueError: 
    253257        raise MalformedMediaIdentifier("Media identifier must be in type:code format") 
    254258     
    255     if (type == 'collection'): 
     259    if (type == 'collection') or (type == 'collections'): 
    256260        try: 
    257261            return MediaCollection.objects.get(code=code) 
    258262        except MediaCollection.DoesNotExist: 
    259263            return None 
    260     elif (type == 'item'): 
     264    elif (type == 'item') or (type == 'items'): 
    261265        try: 
    262266            return MediaItem.objects.get(code=code) 
     
    265269                return MediaItem.objects.get(old_code=code) 
    266270            except MediaItem.DoesNotExist: 
    267                 return None 
     271                try: 
     272                    return MediaItem.objects.get(id=code) 
     273                except MediaItem.DoesNotExist: 
     274                    return None 
    268275    else: 
    269276        raise MalformedMediaIdentifier("No such type in media identifier: " + type) 
  • telemeta/models/location.py

    r9acae9b r8cae994  
    145145            names.append(u', '.join([unicode(l) for l in path])) 
    146146        return names 
     147         
     148    def listnames(self): 
     149        names = [] 
     150        for path in self.paths(): 
     151            for l in path: 
     152                names.append(unicode(l)) 
     153        return names 
    147154 
    148155class LocationType(ModelCore): 
  • telemeta/models/media.py

    rdf36ae0 r451866d  
    259259     
    260260    # Archiving data 
    261     code                  = CharField(_('code'), unique=True, null=True) 
    262     old_code              = CharField(_('old code'), unique=False, null=True, blank=True) 
     261    code                  = CharField(_('code'), unique=True, blank=True) 
     262    old_code              = CharField(_('old code'), unique=False, blank=True) 
    263263    track                 = CharField(_('item number')) 
    264264    creator_reference     = CharField(_('reference')) 
     
    326326        return title 
    327327 
     328 
    328329class MediaItemForm(ModelForm): 
    329330    class Meta: 
    330331        model = MediaItem 
     332    def clean_code(self): 
     333        return self.cleaned_data['code'] or None 
    331334         
    332335class MediaItemKeyword(ModelCore): 
  • telemeta/urls.py

    ra313776 r289a4a3  
    240240    url(r'^login/$', 'django.contrib.auth.views.login', {'template_name': 'telemeta/login.html'}, 
    241241        name="telemeta-login"), 
     242    #url(r'^login/$', 'ipauth.views.login', {'template_name': 'telemeta/login.html'}, 
     243    #    name="telemeta-login"), 
    242244    url(r'^logout/$', general_view.logout, name="telemeta-logout"), 
    243245 
  • telemeta/web/base.py

    rc664814 r86d17e9  
    205205        host = request.META['HTTP_HOST'] 
    206206        datasource  = TelemetaOAIDataSource() 
    207         repository_name = settings.TELEMETA_DESCRIPTION 
     207        repository_name = settings.TELEMETA_ORGANIZATION 
    208208        url         = 'http://' + host + request.path 
    209209        admin       = settings.ADMINS[0][1] 
     
    518518            form = MediaItemForm(data=request.POST, files=request.FILES, instance=item) 
    519519            if form.is_valid(): 
     520                form.save() 
    520521                code = form.cleaned_data['code'] 
    521522                if not code: 
    522                     code = public_id 
    523                 form.save() 
     523                    code = str(item.id) 
    524524                if form.files: 
    525525                    self.cache_data.delete_item_data(code) 
     
    554554            form = MediaItemForm(data=request.POST, files=request.FILES, instance=item) 
    555555            if form.is_valid(): 
     556                form.save() 
     557                item.set_revision(request.user) 
    556558                code = form.cleaned_data['code'] 
    557559                if not code: 
    558                     code = public_id 
    559                 form.save() 
    560                 item.set_revision(request.user) 
     560                    code = str(item.id) 
    561561                return HttpResponseRedirect('/items/'+code) 
    562562        else: 
     
    572572            form = MediaItemForm(data=request.POST, files=request.FILES, instance=new_item) 
    573573            if form.is_valid(): 
     574                form.save() 
    574575                code = form.cleaned_data['code'] 
    575576                if not code: 
    576                     code = public_id 
    577                 form.save() 
     577                    code = str(new_item.id) 
    578578                new_item.set_revision(request.user) 
    579579                return HttpResponseRedirect('/items/'+code) 
Note: See TracChangeset for help on using the changeset viewer.