def my_profile_resources(request): template = loader.get_template('profile/my_profile_resources.html') if 'template' in request.GET: template_name = request.GET['template'] if template_name == 'all': context = RequestContext(request, { 'XMLdatas': XMLdata.find({'iduser' : str(request.user.id)}), }) else : if template_name == 'datacollection': templateNamesQuery = list(chain(Template.objects.filter(title=template_name).values_list('id'), Template.objects.filter(title='repository').values_list('id'), Template.objects.filter(title='database').values_list('id'), Template.objects.filter(title='projectarchive').values_list('id'))) else : templateNamesQuery = Template.objects.filter(title=template_name).values_list('id') templateNames = [] for templateQuery in templateNamesQuery: templateNames.append(str(templateQuery)) context = RequestContext(request, { 'XMLdatas': XMLdata.find({'iduser' : str(request.user.id), 'schema':{"$in" : templateNames}}), 'template': template_name }) else : context = RequestContext(request, { 'XMLdatas': XMLdata.find({'iduser' : str(request.user.id)}), }) return HttpResponse(template.render(context))
def dashboard_records(request): template = loader.get_template('dashboard/my_dashboard_my_records.html') query = {} # ispublished = request.GET.get('ispublished', None) #If ispublished not None, check if we want publish or unpublish records # if ispublished: # ispublished = ispublished == 'true' # query['ispublished'] = ispublished query['iduser'] = str(request.user.id) userXmlData = sorted(XMLdata.find(query), key=lambda data: data['lastmodificationdate'], reverse=True) #Add user_form for change owner owner = UserProfile.objects.get(user=User.objects.get(id=request.user.id)) user_form = UserForm(request.user) context = RequestContext(request, {'XMLdatas': userXmlData, # 'ispublished': ispublished, 'user_form': user_form, 'myGroup': dataGroup.objects.filter(owner=owner.id), 'otherGroup': owner.get_group() }) #If the user is an admin, we get records for other users if request.user.is_staff: #Get user name for admin usernames = dict((str(x.id), x.username) for x in User.objects.all()) query['iduser'] = {"$ne": str(request.user.id)} otherUsersXmlData = sorted(XMLdata.find(query), key=lambda data: data['lastmodificationdate'], reverse=True) context.update({'OtherUsersXMLdatas': otherUsersXmlData, 'usernames': usernames}) return HttpResponse(template.render(context))
def my_profile_resources(request): template = loader.get_template('profile/my_profile_resources.html') if 'template' in request.GET: template_name = request.GET['template'] if template_name == 'all': context = RequestContext(request, { 'XMLdatas': XMLdata.find({'iduser' : str(request.user.id)}), }) else : if template_name == 'datacollection': templateNamesQuery = list(chain(Template.objects.filter(title=template_name).values_list('id'), Template.objects.filter(title='repository').values_list('id'), Template.objects.filter(title='database').values_list('id'), Template.objects.filter(title='projectarchive').values_list('id'))) else : templateNamesQuery = Template.objects.filter(title=template_name).values_list('id') templateNames = [] for templateQuery in templateNamesQuery: templateNames.append(str(templateQuery)) context = RequestContext(request, { 'XMLdatas': XMLdata.find({'iduser' : str(request.user.id), 'schema':{"$in" : templateNames}}), 'template': template_name }) else : context = RequestContext(request, { 'XMLdatas': XMLdata.find({'iduser' : str(request.user.id)}), }) return HttpResponse(template.render(context))
def dashboard_records(request): template = loader.get_template('dashboard/my_dashboard_my_records.html') query = {} # ispublished = request.GET.get('ispublished', None) #If ispublished not None, check if we want publish or unpublish records # if ispublished: # ispublished = ispublished == 'true' # query['ispublished'] = ispublished query['iduser'] = str(request.user.id) userXmlData = sorted(XMLdata.find(query), key=lambda data: data['lastmodificationdate'], reverse=True) # Get all the templates #templates_used = Template.find() templates_used = sorted(Template.find(query), key=lambda data: data['content'], reverse=True) #Add user_form for change owner user_form = UserForm(request.user) otherUsers = User.objects.all() #otherUXMLdatas = sorted(XMLdata.objects(user=str(userId)).distinct(field='title'), key=lambda data: data['lastmodificationdate'], reverse=True) idotherUsers = User.objects.only('_id') otherUXMLdatas = [] # sorted(XMLdata.find(query), key=lambda data: data['lastmodificationdate'], reverse=True) otherUsersTemplates = [] otherUXMLd =[] usernames = [] # for idotherUser in idotherUsers: # otherUXMLdata = Template.objects(user = str(idotherUser)).distinct(field ='title') # otherUXMLdatas.append(otherUXMLdata) #otherXMLdatas = XMLdata.objects(user = (str())) context = RequestContext(request, {'XMLdatas': userXmlData, # 'ispublished': ispublished, 'user_form': user_form, 'Templates': templates_used, 'OtherUsersXMLdatas': otherUXMLdatas, 'OtherUsers': otherUsers, 'IdotherUsers':idotherUsers, 'OtherUXMLd' : otherUXMLd, 'usernames' : usernames, 'totaldocs_user' : len(userXmlData), 'totaldocs_other_users' : len(otherUXMLdatas) }) #If the user is an admin, we get records for other users if request.user.is_staff: #Get user name for admin usernames = dict((str(x.id), x.username) for x in User.objects.all()) query['iduser'] = {"$ne": str(request.user.id)} otherUsersXmlData = sorted(XMLdata.find(query), key=lambda data: data['lastmodificationdate'], reverse=True) context.update({'OtherUsersXMLdatas': otherUsersXmlData, 'usernames': usernames, 'totaldocs_other_users': len(otherUsersXmlData)}) i = None for elem in context['OtherUsersXMLdatas']: i = context['OtherUsersXMLdatas'].index(elem) j = 0 for k,v in context['usernames'].items(): if j == i: other_users.append((k,v)) return HttpResponse(template.render(context))
def dashboard_resources(request): template = loader.get_template('dashboard/my_dashboard_my_records.html') query = {} context = RequestContext(request, {}) ispublished = request.GET.get('ispublished', None) template_name = request.GET.get('template', None) query['iduser'] = str(request.user.id) #If ispublished not None, check if we want publish or unpublish records if ispublished: ispublished = ispublished == 'true' query['ispublished'] = ispublished if template_name: context.update({'template': template_name}) if template_name == 'datacollection': templateNamesQuery = list(chain(Template.objects.filter(title=template_name).values_list('id'), Template.objects.filter(title='repository').values_list('id'), Template.objects.filter(title='database').values_list('id'), Template.objects.filter(title='projectarchive').values_list('id'))) else : templateNamesQuery = Template.objects.filter(title=template_name).values_list('id') templateNames = [] for templateQuery in templateNamesQuery: templateNames.append(str(templateQuery)) query['schema'] = {"$in" : templateNames} userXmlData = sorted(XMLdata.find(query), key=lambda data: data['lastmodificationdate'], reverse=True) #Add user_form for change owner user_form = UserForm(request.user) context.update({'XMLdatas': userXmlData, 'ispublished': ispublished, 'user_form': user_form}) #If the user is an admin, we get records for other users if request.user.is_staff: #Get user name for admin usernames = dict((str(x.id), x.username) for x in User.objects.all()) query['iduser'] = {"$ne": str(request.user.id)} otherUsersXmlData = sorted(XMLdata.find(query), key=lambda data: data['lastmodificationdate'], reverse=True) context.update({'OtherUsersXMLdatas': otherUsersXmlData, 'usernames': usernames}) #Get new version of records listIds = [str(x['_id']) for x in userXmlData] if request.user.is_staff: listIdsOtherUsers = [str(x['_id']) for x in otherUsersXmlData] listIds = list(set(listIds).union(set(listIdsOtherUsers))) drafts = FormData.objects(xml_data_id__in=listIds, isNewVersionOfRecord=True).all() XMLdatasDrafts = dict() for draft in drafts: XMLdatasDrafts[draft.xml_data_id] = draft.id context.update({'XMLdatasDrafts': XMLdatasDrafts}) #Add Status enum context.update({'Status': Status}) return HttpResponse(template.render(context))
def change_status_case_active(self, ispublished): id = self.createXMLData(ispublished=ispublished) XMLdata.change_status(id, Status.INACTIVE) list_xmldata = XMLdata.find({'_id': ObjectId(id)}) self.assertEquals(Status.INACTIVE, list_xmldata[0]['status']) self.assertEquals(Status.INACTIVE, list_xmldata[0]['content']['Resource']['@status']) XMLdata.change_status(id, Status.ACTIVE, ispublished) list_xmldata = XMLdata.find({'_id': ObjectId(id)}) self.assertEquals(Status.ACTIVE, list_xmldata[0]['status']) self.assertEquals(Status.ACTIVE, list_xmldata[0]['content']['Resource']['@status']) if ispublished: self.assertNotEquals(None, list_xmldata[0].get('oai_datestamp', None)) else: self.assertEquals(None, list_xmldata[0].get('oai_datestamp', None))
def test_get_record_deleted(self): self.dump_oai_templ_mf_xslt() self.dump_oai_my_metadata_format() self.dump_oai_my_set() self.dump_xmldata() template = Template.objects(filename='Software.xsd').get() dataSoft = XMLdata.find({ 'schema': str(template.id), 'status': { '$ne': Status.DELETED } }) if len(dataSoft) > 0: xmlDataId = dataSoft[0]['_id'] identifier = '%s:%s:id/%s' % (OAI_SCHEME, OAI_REPO_IDENTIFIER, xmlDataId) data = { 'verb': 'GetRecord', 'identifier': identifier, 'metadataPrefix': 'oai_soft' } r = self.doRequestServer(data=data) self.isStatusOK(r.status_code) #Check attribute status='deleted' of header doesn't exist self.checkTagExist(r.text, 'GetRecord') self.checkTagExist(r.text, 'record') #Delete one record XMLdata.delete(xmlDataId) r = self.doRequestServer(data=data) self.isStatusOK(r.status_code) #Check attribute status='deleted' of header does exist self.checkTagExist(r.text, 'GetRecord')
def change_status_case_active(self, ispublished): id = self.createXMLData(ispublished=ispublished) XMLdata.change_status(id, Status.INACTIVE) list_xmldata = XMLdata.find({'_id': ObjectId(id)}) self.assertEquals(Status.INACTIVE, list_xmldata[0]['status']) self.assertEquals(Status.INACTIVE, list_xmldata[0]['content']['Resource']['@status']) XMLdata.change_status(id, Status.ACTIVE, ispublished) list_xmldata = XMLdata.find({'_id': ObjectId(id)}) self.assertEquals(Status.ACTIVE, list_xmldata[0]['status']) self.assertEquals(Status.ACTIVE, list_xmldata[0]['content']['Resource']['@status']) if ispublished: self.assertNotEquals(None, list_xmldata[0].get('oai_datestamp', None)) else: self.assertEquals(None, list_xmldata[0].get('oai_datestamp', None))
def test_get_record_no_templ_xslt(self): self.dump_oai_my_set() self.dump_xmldata() self.dump_oai_my_metadata_format() idXMLdata = str(XMLdata.find({'title': 'MGI Code Catalog.xml'})[0]['_id']) identifier = '%s:%s:id/%s' % (OAI_SCHEME, OAI_REPO_IDENTIFIER, idXMLdata) data = {'verb': 'GetRecord', 'identifier': identifier, 'metadataPrefix': 'oai_dc'} r = self.doRequestServer(data=data) self.isStatusOK(r.status_code) self.checkTagErrorCode(r.text, DISSEMINATE_FORMAT)
def test_get_record_no_templ_xslt(self): self.dump_oai_my_set() self.dump_xmldata() self.dump_oai_my_metadata_format() idXMLdata = str(XMLdata.find({'title': 'MGI Code Catalog.xml'})[0]['_id']) identifier = '%s:%s:id/%s' % (OAI_SCHEME, OAI_REPO_IDENTIFIER, idXMLdata) data = {'verb': 'GetRecord', 'identifier': identifier, 'metadataPrefix': 'oai_dc'} r = self.doRequestServer(data=data) self.isStatusOK(r.status_code) self.checkTagErrorCode(r.text, DISSEMINATE_FORMAT)
def test_list_metadataformat_with_identifier(self): self.dump_xmldata() self.dump_oai_templ_mf_xslt() self.dump_oai_my_metadata_format() idXMLdata = str(XMLdata.find({'title':'MPInterfaces.xml'})[0]['_id']) identifier = '%s:%s:id/%s' % (OAI_SCHEME, OAI_REPO_IDENTIFIER, idXMLdata) data = {'verb': 'ListMetadataFormats', 'identifier': identifier} r = self.doRequestServer(data=data) self.isStatusOK(r.status_code) self.checkTagExist(r.text, 'ListMetadataFormats') self.checkTagExist(r.text, 'metadataFormat')
def test_list_metadataformat_with_identifier(self): self.dump_xmldata() self.dump_oai_templ_mf_xslt() self.dump_oai_my_metadata_format() idXMLdata = str(XMLdata.find({'title':'MPInterfaces.xml'})[0]['_id']) identifier = '%s:%s:id/%s' % (OAI_SCHEME, OAI_REPO_IDENTIFIER, idXMLdata) data = {'verb': 'ListMetadataFormats', 'identifier': identifier} r = self.doRequestServer(data=data) self.isStatusOK(r.status_code) self.checkTagExist(r.text, 'ListMetadataFormats') self.checkTagExist(r.text, 'metadataFormat')
def dashboard_resources(request): template = loader.get_template('dashboard/my_dashboard_my_resources.html') if 'template' in request.GET: template_name = request.GET['template'] if template_name == 'datacollection': templateNamesQuery = list(chain(Template.objects.filter(title=template_name).values_list('id'), Template.objects.filter(title='repository').values_list('id'), Template.objects.filter(title='database').values_list('id'), Template.objects.filter(title='projectarchive').values_list('id'))) else : templateNamesQuery = Template.objects.filter(title=template_name).values_list('id') templateNames = [] for templateQuery in templateNamesQuery: templateNames.append(str(templateQuery)) if 'ispublished' in request.GET: ispublished = request.GET['ispublished'] context = RequestContext(request, { 'XMLdatas': sorted(XMLdata.find({'iduser' : str(request.user.id), 'schema':{"$in" : templateNames}, 'ispublished': ispublished=='true'}), key=lambda data: data['lastmodificationdate'], reverse=True), 'template': template_name, 'ispublished': ispublished, }) else: context = RequestContext(request, { 'XMLdatas': sorted(XMLdata.find({'iduser' : str(request.user.id), 'schema':{"$in" : templateNames}}), key=lambda data: data['lastmodificationdate'], reverse=True), 'template': template_name, }) else: if 'ispublished' in request.GET: ispublished = request.GET['ispublished'] context = RequestContext(request, { 'XMLdatas': sorted(XMLdata.find({'iduser' : str(request.user.id), 'ispublished': ispublished=='true'}), key=lambda data: data['lastmodificationdate'], reverse=True), 'ispublished': ispublished, }) else: context = RequestContext(request, { 'XMLdatas': sorted(XMLdata.find({'iduser' : str(request.user.id)}), key=lambda data: data['lastmodificationdate'], reverse=True), }) return HttpResponse(template.render(context))
def dashboard_otherusers_records(request): template = loader.get_template('dashboard/my_dashboard_otherusersrecords.html') query = {} iduser = request.GET['iduser'] query['iduser'] = str(iduser) userXmlData = sorted(XMLdata.find(query), key=lambda data: data['lastmodificationdate'], reverse=True) templates_used = sorted(Template.find(query), key=lambda data: data['content'], reverse=True) user_form = UserForm(request.user) context = RequestContext(request, {'XMLdatass': userXmlData, # 'ispublished': ispublished, 'user_formm': user_form, 'Templatess': templates_used }) return HttpResponse(template.render(context))
def query_local_id(request): # extract filters query = {} query['ispublished'] = True query['content.Resource.@localid'] = request.GET[request.GET.keys()[0]] # run query result = XMLdata.find(query) # generate response template = loader.get_template( 'explore/explore_detail_results_keyword.html') if len(result) == 0: context = RequestContext(request, {}) else: context = get_detail_result(request=request, xmlString=result[0], title=None) return HttpResponse(template.render(context))
def list_test_deleted(self, verb): self.dump_oai_templ_mf_xslt() self.dump_oai_my_metadata_format() self.dump_oai_my_set() self.dump_xmldata() data = {'verb': verb, 'metadataPrefix': 'oai_soft'} r = self.doRequestServer(data=data) self.isStatusOK(r.status_code) #Check attribute status='deleted' of header doesn't exist self.checkTagExist(r.text, verb) #Delete one record template = Template.objects(filename='Software.xsd').get() dataSoft = XMLdata.find({'schema': str(template.id), 'status': {'$ne': Status.DELETED}}) if len(dataSoft) > 0: XMLdata.update(dataSoft[0]['_id'], {'status': Status.DELETED}) r = self.doRequestServer(data=data) self.isStatusOK(r.status_code) self.checkTagExist(r.text, verb) #Check attribute status='deleted' of header does exist self.checkTagWithParamExist(r.text, 'header', 'status="deleted"')
def list_test_deleted(self, verb): self.dump_oai_templ_mf_xslt() self.dump_oai_my_metadata_format() self.dump_oai_my_set() self.dump_xmldata() data = {'verb': verb, 'metadataPrefix': 'oai_soft'} r = self.doRequestServer(data=data) self.isStatusOK(r.status_code) #Check attribute status='deleted' of header doesn't exist self.checkTagExist(r.text, verb) #Delete one record template = Template.objects(filename='Software.xsd').get() dataSoft = XMLdata.find({ 'schema': str(template.id), 'status': { '$ne': Status.DELETED } }) if len(dataSoft) > 0: XMLdata.delete(dataSoft[0]['_id']) r = self.doRequestServer(data=data) self.isStatusOK(r.status_code) self.checkTagExist(r.text, verb)
def test_get_record_deleted(self): self.dump_oai_templ_mf_xslt() self.dump_oai_my_metadata_format() self.dump_oai_my_set() self.dump_xmldata() template = Template.objects(filename='Software.xsd').get() dataSoft = XMLdata.find({'schema': str(template.id), 'status': {'$ne': Status.DELETED}}) if len(dataSoft) > 0: xmlDataId = dataSoft[0]['_id'] identifier = '%s:%s:id/%s' % (OAI_SCHEME, OAI_REPO_IDENTIFIER, xmlDataId) data = {'verb': 'GetRecord', 'identifier': identifier, 'metadataPrefix': 'oai_soft'} r = self.doRequestServer(data=data) self.isStatusOK(r.status_code) #Check attribute status='deleted' of header doesn't exist self.checkTagExist(r.text, 'GetRecord') self.checkTagExist(r.text, 'record') #Delete one record XMLdata.update(xmlDataId, {'status': Status.DELETED}) r = self.doRequestServer(data=data) self.isStatusOK(r.status_code) #Check attribute status='deleted' of header does exist self.checkTagExist(r.text, 'GetRecord') # Only for NMRR self.checkTagWithParamExist(r.text, 'header', 'status="deleted"')
def dashboard_resources(request): template = loader.get_template('dashboard/my_dashboard_my_records.html') query = {} context = RequestContext(request, {}) ispublished = request.GET.get('ispublished', None) role_name_list = request.GET.getlist('role', ['all']) role_name = '' for role in role_name_list: role_name += role + ',' context.update({'roles': role_name[:-1]}) query['iduser'] = str(request.user.id) if ispublished: ispublished = ispublished == 'true' query['ispublished'] = ispublished if not (len(role_name_list) == 1 and role_name_list[0] == 'all'): query['$or'] = [{ "content.Resource.role.@xsi:type": role } for role in role_name_list] userXmlData = sorted(XMLdata.find(query), key=lambda data: data['lastmodificationdate'], reverse=True) #Add user_form for change owner user_form = UserForm(request.user) context.update({ 'XMLdatas': userXmlData, 'ispublished': ispublished, 'user_form': user_form }) #If the user is an admin, we get records for other users if request.user.is_staff: #Get user name for admin usernames = dict((str(x.id), x.username) for x in User.objects.all()) query['iduser'] = {"$ne": str(request.user.id)} otherUsersXmlData = sorted( XMLdata.find(query), key=lambda data: data['lastmodificationdate'], reverse=True) context.update({ 'OtherUsersXMLdatas': otherUsersXmlData, 'usernames': usernames }) #Get new version of records listIds = [str(x['_id']) for x in userXmlData] if request.user.is_staff: listIdsOtherUsers = [str(x['_id']) for x in otherUsersXmlData] listIds = list(set(listIds).union(set(listIdsOtherUsers))) drafts = FormData.objects(xml_data_id__in=listIds, isNewVersionOfRecord=True).all() XMLdatasDrafts = dict() for draft in drafts: XMLdatasDrafts[draft.xml_data_id] = draft.id context.update({'XMLdatasDrafts': XMLdatasDrafts}) #Add Status enum context.update({'Status': Status}) return HttpResponse(template.render(context))
def dashboard_resources(request): template = loader.get_template('dashboard/my_dashboard_my_records.html') query = {} context = RequestContext(request, {}) ispublished = request.GET.get('ispublished', None) template_name = request.GET.get('template', None) query['iduser'] = str(request.user.id) #If ispublished not None, check if we want publish or unpublish records if ispublished: ispublished = ispublished == 'true' query['ispublished'] = ispublished if template_name: context.update({'template': template_name}) if template_name == 'datacollection': templateNamesQuery = list( chain( Template.objects.filter( title=template_name).values_list('id'), Template.objects.filter( title='repository').values_list('id'), Template.objects.filter( title='database').values_list('id'), Template.objects.filter( title='projectarchive').values_list('id'))) else: templateNamesQuery = Template.objects.filter( title=template_name).values_list('id') templateNames = [] for templateQuery in templateNamesQuery: templateNames.append(str(templateQuery)) query['schema'] = {"$in": templateNames} userXmlData = sorted(XMLdata.find(query), key=lambda data: data['lastmodificationdate'], reverse=True) #Add user_form for change owner user_form = UserForm(request.user) context.update({ 'XMLdatas': userXmlData, 'ispublished': ispublished, 'user_form': user_form }) #If the user is an admin, we get records for other users if request.user.is_staff: #Get user name for admin usernames = dict((str(x.id), x.username) for x in User.objects.all()) query['iduser'] = {"$ne": str(request.user.id)} otherUsersXmlData = sorted( XMLdata.find(query), key=lambda data: data['lastmodificationdate'], reverse=True) context.update({ 'OtherUsersXMLdatas': otherUsersXmlData, 'usernames': usernames }) #Get new version of records listIds = [str(x['_id']) for x in userXmlData] if request.user.is_staff: listIdsOtherUsers = [str(x['_id']) for x in otherUsersXmlData] listIds = list(set(listIds).union(set(listIdsOtherUsers))) drafts = FormData.objects(xml_data_id__in=listIds, isNewVersionOfRecord=True).all() XMLdatasDrafts = dict() for draft in drafts: XMLdatasDrafts[draft.xml_data_id] = draft.id context.update({'XMLdatasDrafts': XMLdatasDrafts}) #Add Status enum context.update({'Status': Status}) return HttpResponse(template.render(context))
def getListTemplateDependenciesRecord(object_id): from mgi.models import XMLdata return XMLdata.find({'schema': str(object_id)})
def getListTemplateDependenciesRecord(object_id): from mgi.models import XMLdata return XMLdata.find({'schema': str(object_id)})
def test_getListNameFromDependencies_XMLdata(self): self.createXMLData(schemaID='test') self.assertEquals( 'test', getListNameFromDependencies(XMLdata.find({'schema': 'test'})))