def create_artist(self): email = self.request.unauthenticated_userid party = WebUser.current_party(self.request) _artist = { 'party': party, 'group': False, 'name': self.appstruct['artist']['name'], 'description': self.appstruct['artist']['description'] or '' } if self.appstruct['artist']['picture']: picture_data = self.appstruct['artist']['picture']['fp'].read() mimetype = self.appstruct['artist']['picture']['mimetype'] _artist['picture_data'] = picture_data _artist['picture_data_mime_type'] = mimetype artists = Artist.create([_artist]) if not artists: log.info("artist add failed for %s: %s" % (email, _artist)) self.request.session.flash( _(u"Artist could not be added: ") + _artist['name'], 'main-alert-danger' ) self.redirect(ArtistResource, 'list') return artist = artists[0] if self.appstruct['bank_account']['type']: _bank_account_number = { 'bic': self.appstruct['bank_account']['bic'], 'type': self.appstruct['bank_account']['type'], } if self.appstruct['bank_account']['type'] == 'iban': number = self.appstruct['bank_account']['number'] _bank_account_number['number'] = number bank_account_number = BankAccountNumber.create( artist.party, [_bank_account_number] )[0] artist.bank_account_number = bank_account_number artist.save() log.info("artist add successful for %s: %s" % (email, artist)) self.request.session.flash( _(u"Artist added: ") + artist.name + " (" + artist.code + ")", 'main-alert-success' ) self.redirect(ArtistResource, 'list')
def create_artist(self): email = self.request.unauthenticated_userid party = WebUser.current_party(self.request) _artist = { 'party': party, 'group': False, 'name': self.appstruct['artist']['name'], 'description': self.appstruct['artist']['description'] or '' } if self.appstruct['artist']['picture']: picture_data = self.appstruct['artist']['picture']['fp'].read() mimetype = self.appstruct['artist']['picture']['mimetype'] _artist['picture_data'] = picture_data _artist['picture_data_mime_type'] = mimetype artists = Artist.create([_artist]) if not artists: log.info("artist add failed for %s: %s" % (email, _artist)) self.request.session.flash( _(u"Artist could not be added: ") + _artist['name'], 'main-alert-danger') self.redirect(ArtistResource, 'list') return artist = artists[0] if self.appstruct['bank_account']['type']: _bank_account_number = { 'bic': self.appstruct['bank_account']['bic'], 'type': self.appstruct['bank_account']['type'], } if self.appstruct['bank_account']['type'] == 'iban': number = self.appstruct['bank_account']['number'] _bank_account_number['number'] = number bank_account_number = BankAccountNumber.create( artist.party, [_bank_account_number])[0] artist.bank_account_number = bank_account_number artist.save() log.info("artist add successful for %s: %s" % (email, artist)) self.request.session.flash( _(u"Artist added: ") + artist.name + " (" + artist.code + ")", 'main-alert-success') self.redirect(ArtistResource, 'list')
def create_artist(self): email = self.request.unauthenticated_userid party = WebUser.current_party(self.request) # generate vlist _artist = { 'group': self.appstruct['group'], 'party': party, 'entity_creator': party, 'entity_origin': 'direct', 'claim_state': 'claimed', 'name': self.appstruct['name'], 'description': self.appstruct['description'] or '', } # picture if self.appstruct['picture']: with open(self.appstruct['picture']['fp'].name, mode='rb') as picfile: picture_data = picfile.read() mimetype = self.appstruct['picture']['mimetype'] _artist['picture_data'] = picture_data _artist['picture_data_mime_type'] = mimetype # members if self.appstruct['group']: members_add = [] members_create = [] for member in self.appstruct['members']: # add existing artists if member['mode'] == "add": member_artist = Artist.search_by_oid(member['oid']) # sanity checks if not member_artist: continue if member_artist.group: continue # append artist id members_add.append(member_artist.id) # create new artists if member['mode'] == "create": # create new party member_party = Party.create([{ 'name': member['name'], 'contact_mechanisms': [( 'create', [{ 'type': 'email', 'value': member['email'] }] )] }]) member_party = member_party[0] # append member data members_create.append({ 'group': False, 'description': "", 'party': member_party.id, 'entity_creator': party.id, 'entity_origin': 'indirect', 'claim_state': 'unclaimed', 'name': member['name'] }) # append actions _artist['solo_artists'] = [] if members_create: _artist['solo_artists'].append(('create', members_create)) if members_add: _artist['solo_artists'].append(('add', members_add)) # create artist artists = Artist.create([_artist]) # user feedback if not artists: log.info("artist add failed for %s: %s" % (email, _artist)) self.request.session.flash( _(u"Artist could not be added: ${arna}", mapping={'arna': _artist['name']}), 'main-alert-danger' ) self.redirect() return artist = artists[0] log.info("artist add successful for %s: %s" % (email, artist)) self.request.session.flash( _(u"Artist added: ${arna} (${arco})", mapping={'arna': artist.name, 'arco': artist.code}), 'main-alert-success' ) # redirect self.redirect(artist.code)
def create_artist(self): email = self.request.unauthenticated_userid party = WebUser.current_party(self.request) # generate vlist _artist = { 'group': self.appstruct['group'], 'party': party, 'entity_creator': party, 'entity_origin': 'direct', 'claim_state': 'claimed', 'name': self.appstruct['name'], 'description': self.appstruct['description'] or '', } # picture if self.appstruct['picture']: with open(self.appstruct['picture']['fp'].name, mode='rb') as picfile: picture_data = picfile.read() mimetype = self.appstruct['picture']['mimetype'] _artist['picture_data'] = picture_data _artist['picture_data_mime_type'] = mimetype # members if self.appstruct['group']: members_add = [] members_create = [] for member in self.appstruct['members']: # add existing artists if member['mode'] == "add": member_artist = Artist.search_by_oid(member['oid']) # sanity checks if not member_artist: continue if member_artist.group: continue # append artist id members_add.append(member_artist.id) # create new artists if member['mode'] == "create": # create new party member_party = Party.create([{ 'name': member['name'], 'contact_mechanisms': [('create', [{ 'type': 'email', 'value': member['email'] }])] }]) member_party = member_party[0] # append member data members_create.append({ 'group': False, 'description': "", 'party': member_party.id, 'entity_creator': party.id, 'entity_origin': 'indirect', 'claim_state': 'unclaimed', 'name': member['name'] }) # append actions _artist['solo_artists'] = [] if members_create: _artist['solo_artists'].append(('create', members_create)) if members_add: _artist['solo_artists'].append(('add', members_add)) # create artist artists = Artist.create([_artist]) # user feedback if not artists: log.info("artist add failed for %s: %s" % (email, _artist)) self.request.session.flash( _(u"Artist could not be added: ${arna}", mapping={'arna': _artist['name']}), 'main-alert-danger') self.redirect() return artist = artists[0] log.info("artist add successful for %s: %s" % (email, artist)) self.request.session.flash( _(u"Artist added: ${arna} (${arco})", mapping={ 'arna': artist.name, 'arco': artist.code }), 'main-alert-success') # redirect self.redirect(artist.code)
def update_artist(self): appstruct = self.appstruct artist = self.context.artist email = self.request.unauthenticated_userid party = WebUser.current_party(self.request) # group if artist.group != appstruct['group']: # if group status has changed if artist.group: # remove solo artists from current group artist artist.solo_artists = [] else: # remove current solo artist from group artists artist.group_artists = [] artist.group = appstruct['group'] # name if artist.name != appstruct['name']: artist.name = appstruct['name'] # description if artist.description != appstruct['description']: artist.description = appstruct['description'] # picture if self.appstruct['picture']: with open(self.appstruct['picture']['fp'].name, mode='rb') as picfile: picture_data = picfile.read() mimetype = self.appstruct['picture']['mimetype'] artist.picture_data = picture_data artist.picture_data_mime_type = mimetype # members if artist.group: members_current = list(artist.solo_artists) members_future = [] members_remove = members_current members_add = [] members_create = [] for member in appstruct['members']: # add existing artists if member['mode'] == "add": member_artist = Artist.search_by_oid(member['oid']) # sanity checks if not member_artist: continue if member_artist.group: continue members_future.append(member_artist) if member_artist in members_current: members_remove.remove(member_artist) continue # append artist id members_add.append(member_artist) # create new artists if member['mode'] == "create": # create new party member_party = Party.create([{ 'name': member['name'], 'contact_mechanisms': [('create', [{ 'type': 'email', 'value': member['email'] }])] }]) member_party = member_party[0] # create vlist members_create.append({ 'group': False, 'description': "", 'party': member_party.id, 'entity_creator': party.id, 'entity_origin': 'indirect', 'claim_state': 'unclaimed', 'name': member['name'] }) # edit created artists if member['mode'] == "edit": member_artist = Artist.search_by_code(member['code']) member_party = member_artist.party # sanity checks if not member_artist: continue # security checks if not Artist.is_foreign_member(self.request, artist, member_artist): continue # edit artist member_artist.name = member['name'] has_email = False log.debug(( "member_artist.party.contact_mechanisms: {}\n").format( member_artist.party.contact_mechanisms)) if member_party.contact_mechanisms: for contact in member_party.contact_mechanisms: if contact.type == 'email': has_email = True contact.email = member['email'] contact.save() if not has_email: # TODO: find out, how to create a new contact mechanism # without triggering a user validation error on email log.debug("warning: member email not created (TODO)") member_artist.save() members_future.append(member_artist) # create new artists if members_create: members_created = Artist.create(members_create) members_future += members_created # add new member list artist.solo_artists = members_future # update artist artist.save() # user feedback log.info("edit artist successful for %s: %s" % (email, artist)) self.request.session.flash( _(u"Artist edited: ${arna} (${arco})", mapping={ 'arna': artist.name, 'arco': artist.code }), 'main-alert-success') # redirect self.redirect()